Databáze verze MySQL 5.7 a čeština
Databáze na serveru s verzí verze MySQL 5.7 se zřizují bez nastavené defaultní znakové sady (tzn. Latin1).
Pokud je to u Vaší databáze jinak, doporučujeme nastavit znakovou sadu UTF-8 a české třídění, nerozlišující velikost písmen. To provede např. přes phpMyAdmin SQL příkazem:
ALTER DATABASE nazev_databaze
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_czech_ci;
Pokud pak vytvořítme následující tabulku se dvěma sloupci ID a hodnota:
CREATE TABLE cz_test
(ID INT NOT NULL AUTO_INCREMENT ,
hodnota VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_czech_ci, PRIMARY KEY (ID)
) TYPE = MYISAM CHARACTER SET utf8 COLLATE utf8_czech_ci;
není problém do ní vkládat české znaky a korektně funguje i třídění znaků jako je "ch".
Při dalším prozkoumání manuálových stránek zjistíte, že znaková sada předávaná serverem se dá změnit prostřednictvím SET NAMES - viz https://dev.mysql.com/doc/refman/5.7/en/set-names.html
Pro výstup v patřičném kódování (např. windows-1250) na webovou prezentaci stačí zadat po obvyklém připojení příkaz MySQL_Query("SET NAMES 'cp1250'");
Takto by mohla vypadat část kódu pro připojení k databázi:
$link = MySQL_Connect("adresa_databazoveho_serveru", "nazev_uzivatele", "heslo")
or die("Nelze se připojit"); //připojení k serveru
MySQL_Select_DB("nazev_databaze") or die("Nelze vybrat databazi"); //výběr databáze
MySQL_Query("SET NAMES 'cp1250'"); //překóduje DB do windows-1250
// .....další příkazy a dotazy na databázi
MySQL_Close($link); //ukončení spojení
Manuálové stránky (Chapter 10. Character Set Support): https://dev.mysql.com/doc/refman/5.7/en/charset.html