Portál technické podpory

Pokud zde nenajdete to, co jste hledali, neváhejte nás kontaktovat.
Potřebné informace pro vás rádi doplníme.

Databáze verze MySQL 4.1 a čeština

Databáze na serveru s verzí verze MySQL 4.1 se zřizují bez nastavené defaultní znakové sady (tzn. Latin1).

Pro správnou funkci českých znaků je třeba, aby si uživatel nastavil znakovou sadu ve které bude databáze kódována. To provede např. přes phpMyAdmin SQL příkazem:

ALTER DATABASE nazev_databaze
DEFAULT CHARACTER SET cp1250
DEFAULT COLLATE cp1250_czech_cs;

Tímto si uživatel nastavil pro databázi nazev_databaze výchozí kódování na windows-1250 (cp1250) a třídění české, které rozlišuje velikost pímen.

Dalším příkladem je možno nastavit znakovou sadu UTF-8 a české třídění, nerozlišující velikost písmen (dopručujeme všem):

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 http://dev.mysql.com/doc/mysql/en/set-option.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í

Pod odskoky v horní části stránky jsou uvedeny dva příklady pro kódování windows-1250 a utf-8.

Manuálové stránky (Chapter 10. Character Set Support): http://dev.mysql.com/doc/mysql/en/charset.html