Karakterkezelési probléma PHP/MySQL
Hali!
Lenne egy problémám, remélem vki tud segíteni!!
Az a helyzet, hogy az SQL-ban eltárolt adatok
magyar ékezetes részei helyett valami hihetetlen
karaktersorozatokat produkál. A form-om <select>-jét
töltöm fel a táblából. PhpMyadmin alatt tökéletesek az
ékezetek, de bármilyen kódolást állítok be (latin2) ugyanazt
az eredményt kapom az oldalban, pedig header();-rel és <META>-val
is próbáltam beállítani a weblap kódolását. Az utf-8 pedig
mind a <meta> és mind a header(); esetén tiszta fehér képernyőt
eredményez. Na erre mi lehet a megoldás???
■ Lenne egy problémám, remélem vki tud segíteni!!
Az a helyzet, hogy az SQL-ban eltárolt adatok
magyar ékezetes részei helyett valami hihetetlen
karaktersorozatokat produkál. A form-om <select>-jét
töltöm fel a táblából. PhpMyadmin alatt tökéletesek az
ékezetek, de bármilyen kódolást állítok be (latin2) ugyanazt
az eredményt kapom az oldalban, pedig header();-rel és <META>-val
is próbáltam beállítani a weblap kódolását. Az utf-8 pedig
mind a <meta> és mind a header(); esetén tiszta fehér képernyőt
eredményez. Na erre mi lehet a megoldás???
Nem tudom milyen MySQL-t
MySQL ver.
lehetőséget választottam (utf-8)!! És ami a legfurcsább, hogy
ha phpmyadminból megváltoztatom a mező karakterkészletét (vagy manuálisan
CHARACTER SET-tel, COLLATE-tel) akkor sem csinál semmit!!!
Már kínomban kipróbáltam, hogy kínai karakterkészlettel milyen,
de ugyanaz maradt mint volt! Lövésem sincs mi lehet vele....
Felrakom újra inkább, hátha...
Ugyanaz a helyzet.
Balga módon frissítettem a MySQL-t 4.1.13-ra 4.1.10-ről,
és teljesen meghülyült a collation/charset kezelése,
már nem látom át, hogy mit miért csinál, hiába állítom
be egy táblára, hogy latin2/latin2_hungarian_ci, utf8-ként
adja ki a karaktereket és fordítva...
Hogyan lehet ezt a collation/charset dolgot letiltani benne?
Egyáltalán nincs szükségem rá, csak összezavar mindent. :(
--
Aries
http://aries.mindworks.hu
karakter beállítás
http://dev.mysql.com/doc/mysql/en/charset-database.html
http://dev.mysql.com/doc/mysql/en/charset-table.html
Üdv
Zoli
utf8
Állíts mindent utf8-ra.
A PHP.INI-ben:
default_charset = "utf-8"
A MY.INI-ben:
init_connect="SET NAMES utf8"
default-character-set=utf8
Az az init_connect lesz a lényeg, mert anélkül nem működött nálam sem. Hiába állítgattam, konvertáltam bármit.
Üdv
Zoli
ez nem teljesen ok
--
Aries
http://aries.mindworks.hu
az nem baj
A régi adatbázisoddal az a baj, hogy a kétbájtos betűk két külön karakterként tárolódtak. (és eddig látszólagosan jól is működött minden, mert a PHP ugyan értelmezte ezeket UTF8-nak, de az adatbázis mégsem ezt mutatta)
Én azt tettem, hogy exportáltam a már UTF8 adatbázist, majd kicseréltem (UTF8 editorban: notepad.exe) a kétkarakteres, rosszul megjelenő karaktereket a magyar ékezetesekre. Lementettem, visszaimportáltam, és csoda történt.
A fenti beállításokkal a MySQL Browser-rel is szerkeszthető, olvasható szöveget kapsz.
Nagy kínlódás... nekem orosz karakterekkel + hexa editorral kellett ezt játszanom.
Üdv
Zoli
Köszi a választ! De
A my.cnf -ben most ez van:
init_connect="SET NAMES latin1"
default_character_set=latin1
A
SET CHARACTER SET latin1
-et kell beírni az utf8-as tartalmakhoz,és
SET CHARACTER SET utf8
-at pedig a latin1-es tartalmakhoz.Mindkét táblának latin1_swedish_ci a collation-je.
Nagyon elvesztettem a fonalat :(((
--
Aries
http://aries.mindworks.hu
collation
Azért van ekkora kavarodás a karakterkódolás között, mert a PHP-MySQL kapcsolatban a PHP feltölti karakterekkel a MySQL-t. Olyan karakterszettel, amire a PHP-t állítottad. És ezután a PHP ki is tudja "olvani" onnan, szinte tök mindegy mit állítottál a my.conf fájlba.
Ezért működik tök jól a PHPMyAdmin.
Dehavéletlen: közvetlenül akarod szerkeszteni a táblát a MySQL Browser-ben, vagy exportálod SQL fájlba a táblát, mégis hülyeséget látsz.
Ez izgatott engem fel, hogy miért látok szerkeszthetetlen adatot a táblában... Rájöttem, hogy a PHP-MySQL kommunkiáció során "elveszik" az az info, hogy UTF8 karatereket küld a PHP, és hogy tessék azt UTF8-ként fogadni a MySQL-nek.
Ezért kell az init_connect sor a my.conf-ba.
De ettől nem javul ugye meg a dolog, mert azt látod, hogy az EZUTÁN bevitt adatok már jól jelenítődnek meg, de az eddig "rosszul" tárolt adatokat már ilyen konvergálgatásokkal nem tudsz UTF8-ra váltani.
Erre írtam a fent vázolt megoldást.
Remélem nem hibás az elméletem, de nem találtam rá magyarázatot sehol. Keress rá az init_connect-re a neten.
Üdv
Zoli
"Állíts mindent
A PHP.INI-ben,A MY.INI-ben:"
És ha nincs root joga a gephez?
Egyebkent nekem is hasonlo a problémám, mar probaltam az egvilagon mindent de semmi. Nekem a szlovák karaktereket kene kezelnie: čýáíéľš megy de például a ť az nem. Allitgattam SET CHARACTER SET czeh, vagy az utf8-cal is megprobaltam,de csak ennyit kaptam: unknown character set czeh.
Kivancsi vagyok hogy az phpmyadmin , hogyan is mukodik, ugyanis ott nekem is jo minden :/
---
http://adriankoooo.blogspot.com
KISS módszer
Nem tudom, hogy a PHPMyAdminban hogy jelenik meg, de azt nem használok... :)
ProClub
proclub##kukac##karinthy.hu
Nem akarok senkit bántani
Minden legyen utf-8? És ha valaki más db-t akar használni, más paraméterekkel?
Röviden: nem kell a szerver és php beállításokhoz hozzányúlni.
Az utf-8 meg azért is érdekes mysql-nel, mert nincs hozzá magyar collation. Nem tudom, még nem teszteltem, hogy mi lesz a végeredmény, de a mysql 4.0.x-nel utf-8 as db esetén nem volt jó. Nincsenek kétségeim, hogy a 4.1-nél sem lesz jó a sorrend magyar ékezetek esetén.
Tehát:
create db-kor megadni a character set latin2 és a collation latin2_hungarian_ci paramétereket. Ekkor annak a db-nek ez lesz a default beállítása.
Ez még nem elég. Ha php-val kapcsolódsz a db-hez, akkor a connection után add ki a "set names latin2" query-t.
Utána jó lesz. Épp most teszteltem, így megmaradnak az őŐűŰ betűk. Remélhetőleg a sorba rendezés is oké lesz.
--
[ Dönci ]
A jövő az utf8
企業活動 - 環境 - 安全 - 社会活動 - 気球
Egyetértek...
나중에 다시 방문해 주십시오.
(Ez azt jelenti koreaiul, hogy az oldal feltöltés alatt, nézz vissza később.)
Ez meg Budapest: 부다페스트.
--
Szeretettel: Károly György Tamás
kgyt(a)kgyt.hu - http://kgyt.hu
latin2 DE a PHP forrás fájl is ANSI legyen!
Csak akkor működik helyesen, ha magának a php fájlnak sem utf8 a kódolása hanem ANSI.
Ezt a legegyszerübben úgy lehet ellenőrizni vagy módosítani, hogy jegyzettömben megnyitva, mentés máskéntnél kiválasztható a kódolás.
[VarankaJ]
<Nincs cím>
akkor is érdemes
De jó, hogy már nem az adatkonvertálásokkal kell foglalkoznom.
Zed