Apache + MYSQL + Charset + Collation

Üdv!

A problémám a következő:

Van egy adatbázisom (MYSQL szerveren) alapból utf8-as volt minden beállításom a szerveren, ezért a php+html kódot is UTF8-ban írtam, gondoltam minden egyezik szuper lesz. Ment is minden rendesen míg nem eljutottam ahhoz a ponthoz, hogy selectet kell írnom. Ekkor ha például van két rekordom: name=Alma és name=Álma és elküldök a szervernek egy ilyet: SELECT * FROM tanulok WHERE name='Álma' akkor fogja és kiprinteli azt a sort is ahol Alma a name. Ekkor az okosok azt mondták hogy a COLLATION-al lesz a baj mert van ugye a bináris összehasonlítás meg a nem bináris. Mivel az egész php+html kód utf8 ba volt gondoltam elég annyi, hogyha ezt beállítom a MYSQL szerveren collation utf_hungarian_ci, hát sajnos ezt beállítva sem működött, jó akkor rakjuk at az egeszet latin2-re ezzel szenvedtem egy kis időt (fél napot) de végül átállítottam az sql szervernek a karakterkódolását latin2-re és a COLLATIONT latin2_bin-re. Szuper, akkor ugye most az egész php+html kódot is át kell írni mert az meg utf8 ba van és a mysqlnek ha így küld ékezetes betűket akkor ez lesz: �. Tehát elkezdtem átírni az egészet ISO-8859-2-re metakat átírni plusz mivel netbeansben dolgozom project kódolást átrakta ISO-ra na akkor szépen elb... elromlott az összes ékezet a kódban, jó még ezeket is kijavítottam. Na akkor nézzük most mi történik? Insertnél az ékezetig küldi el a karaktereket pl János nal a name az lesz hogy J... Szuper akkor most tartok ott hogy elég ideges vagyok és nem tudom milyen karakterkódolást állítsák, hogy jó legyen.

Ezzel foglalkozó thread-ek:

http://hup.hu/node/15651
http://hup.hu/node/23532

ui: Elkeseredésemben hozzá adtam ezt a sort: AddDefaultCharset ISO8859-2 a httpd.conf-hoz de ez sem segített...

Hozzászólások

Köszönöm szépen ez elég járható útnak tűnik, most megint vár rám pá kellemetlen perc mire mindent vissza állítok, de legalább működik.

Ettől függetlenül nem hiszem el, hogy minden php programozó oda írja a selectek-nél a where után, hogy binary. Csak van erre épkézláb megoldás! Még várok ide postokat, ki hogy oldja meg ezeket a dolgokat, mert amennyit szívtam vele úgy érzem tartozom magamnak ennyivel. :D

Ez nem PHP függő, a MYSQL egyszerűen ilyen: beállítod a legjellemzőbb collation-t az egész adatbázisra, ami akár *bin* is lehet, és csak a kivételes helyeken használsz mást. Latin2_bin-nel is működnie kellene, csak valószínűleg nem sikerült valamit megfelelően konfigurálnod.