AJAX <-> mySQL Karakterkódolás?
Van egy php-s lap. Egyik divbe ajaxxal betöltöm az adatokat adatbázisból textboxokba, amit ide írok azt pedig beírom db-be. (-> ajaxxal nyitom meg ezt a php-t, mielőtt frissít, mindent átkonvertálok iso-rol utf-8ra)
Minden php-s lapom, meg minden header, és amiben szórakozok oldal metaja, és xml izéja(ez nem biztos h jo) ISO-8859-2es.
DB kiszolgálókapcsolat illesztése utf8_general_ci, oszlopok pedig utf16_magyar.
MI A GONDOM: oldalra minden jól töltődik be, minden ékezet stimmel, ŐőŰű is, DE az adatbázisba ezek kerülnek: ÕõÛû.
Mielőtt lefuttatja a frissítést, kiirattam mit frissít és milyen url-t küld, itt még stimmelnek.
A lapomon amit betöltök a db-ből(ÕõÛû) az lesz ŐőŰű, DE ha db-ben átírom rendes betűre, akkor betöltve ???? lesz.
Mi lehet a gond? Valami ötlet?
<?xml version="1.0" encoding="ISO-8859-2"?><ajax-request><addmsg><![CDATA[]]></addmsg></ajax-request> ez kell bele? jól írtam? meta után kell?
+ headert cserélgettem mindenhol, hogy utf-8 legyen + a fájl kódolását is, vegyesen, mindenhogy, de sehogy nem jó.
Most megcsináltam újra az adatbázist, az oszlopok latin2esek.
Most az történik, hogy hiába küldöm el az ŐőŰű betűket, db-ben most nem "ÕõÛû" hanem "????" lesz, ÉS db-ben beírva ugyanúgy ?-eket mutat ezekre a betűkre.
Előző üzenetemhez:
db-ben beírom, úgy is marad, de oldalon ? lesz. Ellenőrzöm ahogyan előbb:minden jónak tűnik.
Nincs ötletem mit kéne tennem.
Ajaxban:
var data = $('#SqlUpdateFrom').serialize();
alert(data); //ezt az urlt leforditom akkor jol mutatja
xmlhttp.send(data);
php, amit meghívok ajaxxal:
$nev = mysql_real_escape_string(mb_convert_encoding($_POST["nev"][$id], "ISO-8859-2", "UTF-8")); //kiprintelem, jók a betűk.
Célszerű mindent (fájlokat is) egy kódoláson tartani (erősen javasolt az UTF8 (w/o BOM)), mert a többszörös kódolásba csak bele fogsz hülyülni, és tuti, hogy kihagysz valahol valamit (ahogy a példa is mutatja).
Ha végképp nem tudod mit hogy kódolsz, akkor kódolj mindent latinná (php: utf8_encode/utf8_decode), azt minden tárolja, csak kiiratásnál figyelj, hogy egyszeresen kódolj vissza.
$valami= mb_convert_encoding($_POST["valami"], "ISO-8859-2", "UTF-8");
értelemszerűen $valami kerül feltöltésre.
nekem ez oldotta meg, ezt a gondot.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!