Delší dobu jsem měl problémy s MySQL databází a češtinou. Přitom na stránkách mám kódování UTF-8, o kterém jsem četl, že mnoho problémů vyřeší;-)
Pokud se s daty operovalo pomocí skriptů, nebyl problém. Data ale nebyla čitelná v phpMyAdminu ani v exportu, provedeném pomocí skriptu do UTF-8...
Problém se tedy projevoval tak, že z administrace, kterou jsem si sám napsal, se data v pořádku uložila do databáze a z databáze se zase v pořádku vypsala na stránkách, na kterých bylo nastaveno kódování UTF-8.
Potíže nastaly v případě potřeby zálohy databáze. Zjistil jsem, že soubor, do kterého databázi pomocí skriptu exportuji, je totálně nečitelný, stejně jako data, na která jsem se díval před phpMyAdmina. Byla to jakási směs znaků, později jsem zjisil, že patřně mix kódování Latin1 a UTF-8.
Řešení: exportoval jsem databázi do UTF-8. Pak jsem přestavil kódování databáze na UTF-8 (zjistil jsem, že tam bylo Latin1_swedish;-) ):
V phpMyAdminu: přes danou databázi / Úpravy / Porovnávání - nastavit na "utf_czech_ci". Stejně tak potom u kažné tabulky.
Nebo příkazem: "ALTER DATABASE 'nazev_databaze' DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_czech_ci;". Podobně pro tabulky - více viz diskuze Prevod stranek do uf8, co z MySQL?.
Pak jsem soubor v UTF-8 naimportoval. To vyřešilo problém nečitelnosti v phpMyAdminu. Nyní ale, když jsem chtěl něco do databáze uložit přes administraci (kódování UTF-8 stejně jako celé stránky), změnily se některé znaky na otazníky.
Bylo ještě nutné hned po připojení k databázi (db_connect) nastavit kódování komunikace: ' mysql_query("SET CHARACTER SET utf8"); ' - a pozor, skutečně musí být "utf8", ne "utf-8".-)
Jestli se čtěním tohoto článku nemáte větší potíže, problém byl patrně vyřešen;-)
Další informace například v článku MySQL 4.1 – kódování.
Tento web jsem zakládal na střední, v roce 2008. Je zde hlavně archiv mé tvorby.
Aktuální věci publikuji kvůli úspoře času na Twitter.
Honza
"Čas je materiál, ze kterého se vyrábí život."