Špatně ukládaná diakritika v databázi
Dobrý den,
do databáze ukládám data zadané z formuláře (textové pole, kde data zadává zákazník a dále hodnoty z listboxu).
Do textového pole zákazník uloží např. text „Testovací požadavek“ a do databáze se mi uloží „Testovacà požadavek“.
Data, která se následně na webu vyčítají z DB, jsou zobrazována korektně. Problém je ve chvíli, kdy chci selectovat data..
Nemohu použít select * from XXXXX where nazev=’Testovací požadavek‘, ale musím použít select * from XXXXX where nazev=’Testovacà požadavek‘, což je dost nepraktické..
PHP skript je vytvořený a upravovaný ve Visual Studiu, uložený ve formátování UTF-8, ve zdrojovém kódu nejsou žádné informace o kódování.
Tabulka v DB má kódování utf8_general_ci, zkoušel jsem i utf8_czech_ci, ale výsledek je stále stejný.
Díky za případný tip, co upravit.
3 Answers
Problém už jsem si vyřešil.
Stačí před uložením dat spustit mysql_query(„SET NAMES utf8“).
Stejně tak i při vyčítaní dat z databáze se rozhazovala diakritika, opět stačí spustit mysql_query(„SET NAMES utf8“).
Ještě pro jistotu – jedná se o PHP 5.6
Dobrý den,
je nutné , aby se vše ukládalo ve formátu UTF8, zkontrolujte si jestli nemáte nějaký formulář , třeba tinymce, který by měl jiné kodování.
Každopádně před uložením do databáze zkuste vyvolat
mysql_query("SET NAMES 'utf-8'");
nebo
mysql_set_charset('utf8', $link);