HTML/PHP probléma, "ő" és "ű" megjelenítése?
egy textarea-ba beírt szövegben technikai okokból ki kellett cseréltem php-val néhány karaktert, íme a kód:
$eredeti = array ( "&" , "\"" , "<" , ">" , "\r\n" );
$csere = array ( "&" , """ , "<" , ">" , "<br>" );
$leiras = str_replace($eredeti, $csere, $_POST['leiras']);
a következővel szembesültem: az ő, ű, Ő, Ű karakterek helyett a unicode-kódjukat kaptam vissza - odáig megvan, hogy jelen esetben ez a bűnös: "& => &", azonban nem ez a probléma valódi oka, hanem, hogy a mezőbe beírt "ő" pont úgy tárolódik, mintha azt írnám be, hogy "ő"... legalábbis én így vettem észre
miként tudnám ezt orvosolni?
("ő" átalakítása ő-vé nem opció, mert akkor is átalakítja, ha ez volt eleve beírva)
egy textarea-ba beírt szövegben technikai okokból ki kellett cseréltem php-val néhány karaktert, íme a kód:
$eredeti = array ( "&" , "\"" , "<" , ">" , "\r\n" );
$csere = array ( "&" , """ , "<" , ">" , "<br>" );
$leiras = str_replace($eredeti, $csere, $_POST['leiras']);
a következővel szembesültem: az ő, ű, Ő, Ű karakterek helyett a unicode-kódjukat kaptam vissza - odáig megvan, hogy jelen esetben ez a bűnös: "& => &", azonban nem ez a probléma valódi oka, hanem, hogy a mezőbe beírt "ő" pont úgy tárolódik, mintha azt írnám be, hogy "ő"... legalábbis én így vettem észre
miként tudnám ezt orvosolni?
("ő" átalakítása "ő"-vé nem opció, mert akkor is átalakítja, ha ez volt eleve beírva)
Úgy érzem, hogy itt a környezeti rendszer a hibás. Az utf8 ill. unicode karakterek használatához elengedhetetlen, hogy mindent utf8 kódolással kezelj:
1. a weboldalt magát (meta, ill php charset beállítás)
2. a weboldal szövegfájljai (php, html, js) utf8 kódolással byte order mark nélkül (BOM nélkül) legyenek mentve.
3. a tároló adatbázis, valamint a szöveges mezők is utf8 kódolásúak legyenek (utf8_unicode_ci vagy utf8_hungarian_ci vagy utf8_general_ci...)
4. adatbázis híváskor tudatosítani az sql kezelővel az utf8 használatot ("SET CHARACTER SET 'utf8'" és "SET NAMES 'utf8'")
Emellett egy szebb megoldást érdemes alkalmazni a gyanús és kizárt karakterek cseréjére regex-szel, a preg_replace vagy preg-replace_callback függvénnyel. Példakódok a neten ezrével.
Sok sikert!
köszi
sikerült megoldani
már korábban is próbálkoztam, de nem voltam elég figyelmes, és nem átalakítottam a fájlokat utf8 kódolásúra, csak beállítottam, hogy a notepad++ eszerint olvassa be (aztán nem értettem, hogy miért írta át az ékezetes karaktereket)
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!