Autor Zpráva
BuGeR
Profil
Zdravím,

možná, že se to už tady řešilo, ale nenašel jsem nic co by mi pomohlo (ani tady, ani na jiných webech).
Mám formulář a hodnoty, které zadá uživatel převedu na JSON (pomocí json_encode), a uložím je do databáze.
Potom ty hodnoty načtu z databáze a převedu je zpátky na array (pomocí json_decode)..
Problém ale nastane, když uživatel zadá text s diakritikou - v tom případě se do databáze uloží něco takového "zkouu0161ka"(místo "zkouška").

Zkoušel jsem to různě filtrovat přes utf8_encode/utf8_decode, ale výsledek je pořád stejný.
Poradíte mi co s tím?

Budu vděčný za každou pomoc :-) Díky
Jan Tvrdík
Profil
BuGeR:
V tom případě někde zahazuješ lomítka. Mělo by se to uložit jako zkou\u0161ka (U+0161 je kód pro š).
BuGeR
Profil
Jan Tvrdík:
V databázi mám právě zkouu0161ka, takže předpokládam, že se lomítka zahodí ještě někde před uložením, ale nevidím vůbec nikde kde. Vyberu si data z $_POST uložím je do proměnné $saver, a $saver potom uložím do databáze přes json_encode. Nikde neescapuju ani nic..
Nemůže to způsobovat databáze? Datový typ sloupce mám TEXT, a porovnání utf8_czech_ci..
Alphard
Profil
To že nic neexcapujte neříkejte nahlas a hned to napravte. mysql_real_escape_string()
BuGeR
Profil
Jan Tvrdík, Alphard:
Supr, díky, pomohlo escapovaní :-)
Alphard
Profil
BuGeR:
Supr, díky, pomohlo escapovaní :-)
Nesmějte se, escapování má být automatické a všude, nečekejte na problémy a ošetřete to hned.
BuGeR
Profil
Alphard:
Já nevěděl, jestli to vůbec takto pojede, a nevěděl jsem, že má escapování vliv na JSON.

Jinak samozřejmě všechny vstupní data escapuju.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: