Sziasztok
Adott egy PHP5-ös script, Apache2 és Mysql. Mind a legfrissebb Ubuntu stable ágból.
A gondom a következő:
Minden elemem utf-8-at használ, kivétel a mysql, ez latin1-et. Utóbbit örököltem, nem piszkálhatom.
A web-en minden rendben látok, ékezetekkel nincs gond, de amikor az összerakott string átkerül a mysql lekérdezésbe, átalakul és nem is tudom lebeszélni erről. Egy példa: Bátaszék -> B%C3%A1tasz%C3%A9k lesz, amikor kiírja a program az sql select kifejezést.
Egyszerűen nem tudom visszaalakítani, hogy eredeti formában legyen a szűréskor és így találatot sem ad a mysql. (Az adatok egy része felületről jön, másik része mysql-ből, amit a lekérdezés összeállítására használok.)
iconv("latin1","utf-8",$valtozo) és iconv("iso-8859-1","utf-8",$valtozo) nem vezetett eredményre nálam.
Van valami ötlet, hogy mit tegyek a változóval, hogy ismét UTF-8-ban legyen és eredeti formájába kerüljön?
Köszönöm
- 1362 megtekintés
Hozzászólások
Próbálkozz meg a set names -el.
mysql_query("set names utf-8")
Nem szép megoldás,de talán segíthet
Üdv
- A hozzászóláshoz be kell jelentkezni
Vagy inkább: mysql_query('SET NAMES utf8');
- A hozzászóláshoz be kell jelentkezni
csatlakozva az elottem levokhoz
mysql_query("SET NAMES 'utf8'");
ugyis csak az SQL connectionnel kell egyszer megadnod
- A hozzászóláshoz be kell jelentkezni
Bár nem szabadna, de alighanem az adatbázist fogom utf-8-ba átalakítani, mert nem szeretem a menetközben konvertálgatást.
Köszönöm az ötleteket.
- A hozzászóláshoz be kell jelentkezni
ez nem menetkozbeni konvertalgatas, a fenti megoldas feltetelezi, hogy utf8-ban vannak az adataid az adatbazisban.
t
- A hozzászóláshoz be kell jelentkezni
Egyertlemu ez a megoldas. Mezok, tablak utf8-ba. Nincs szivas utana semmivel.
- A hozzászóláshoz be kell jelentkezni
Az nem megoldható, hogy mindenhol html entitásokat alakalmazol? Ezzel elvileg mindíg problémamentes lesz az életed...
szürkehrteg
azenoldalamponthu
- A hozzászóláshoz be kell jelentkezni
Es van valami, ami on-the-fly konvertal html entitasok es kulonbozo kodolasu szovegek kozt? Vagyis ne csinalja nekem azt, hogy csak egyfele kodolast ismer, es a masikfajta kodolasban lekodolt á betut nem á nevre kodolja le.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Ebbe még nem folytam bele, de pl nem hiszem, hogy a php hibája, hogy nagyobb oldalak is előszeretettel használnak windows-125* -ot, ha meg migrálni kell, vagy tartalmat átadni, akkor megy a sírás-rívás.
A fejlesztő tervezési hülyeségét legalábbis nem hiszem, hogy így kell megoldani.
A htmlentities és a html_entity_decode pl többféle karakterkódolást ismer, -ha erről van szó-, workaroundnak meg ott az str_replace, preg_replace és társai, ha valamit sikerül elszabni.
Vagy nem erre voltál kíváncsi?
szürkehrteg
azenoldalamponthu
- A hozzászóláshoz be kell jelentkezni
Igazabol a kerdesemre eleg lett volna valaszkent ennyi is: "A htmlentities és a html_entity_decode pl többféle karakterkódolást ismer."
De igen, és koszonom.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Berakhatod a my.cnf-be is a init_connect = "SET NAMES utf8" opciot, mint ahogy fentebb is emlitettek paran.
Egy dologra figyelj (azert irom ide, hogy a gugli bekesselje mivel multkor szivtam vele):
ha az adott mysql usernek be van allitva a SUPER privilege akkor az init_connect _NEM_ hajtodik vegre.
- A hozzászóláshoz be kell jelentkezni