JanKoWeb: Tvorba webu - MySQL a problémy s kódováním češtiny
"Nemusí pršet, stačí když kape..."
JanKoWeb - návody, postřehy a rady ze světa softwaru pro každého.
Recenze knih a humorná tvorba pro chvíle oddechu...

Do západu slunce 15 hodin a 16 minut (vyšlo 05:06, zapadne 21:09).

"1"

V. Havel
Galerie nemohla být načtena.
Jméno:
Číselně: nula a pět je
Jedna, dvě, tři, čtyři, pět, šest, sedm, osm, děvět, deset - du!
Při každém obnovení stránky se zde vypíše zpráva skriptu.

Skript je zdrojový kód interpretovaného programu.

Pohání celý tento web a rád komunikuje s návštěvníky.-)
RSS RSS zdroj článků a novinek

MySQL a problémy s kódováním češtiny

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í.

Rubrika Tvorba webu | Tagy Kódování, MySQL, Php | Pá 29.05.2009 | 5185x

Náhodné články

© 2008-2025 JK, kontakt, právní upozornění
Powered by Janko's RS| XHTML, CSS, RSS, analýza kódu, SEO servis, dostupnost, hosting, líbí se Vám tu?
Požadavek: 0.78053 s, generování: 0.02402 s, paměť: 1.21 MB, sql dotazů: 8, CPU: 26.77

.