ELEKTRO
CHEMIE
PROGRAMOVÁNÍ
FOTKY
BLOG
E-SHOP

Elektro

  • Novinky
  • Aktuality
  • PHP
  • MySQL
  • JavaScript
  • .NET
  • Download
  • Odkazy
  • Anketa
  • Návštěvní kniha
  • Mapa webu
  • O webu
  • RSS

  • © by Hugo moravec.zd@gmail.com

    MySQL a kódování

    Pro jednoho zákazníka jsem vytvořil redakční systém, který využívá pro ukládání textů MySQL. Jelikož se jednalo o web, kde je část textů v češtině, musel jsem nastudovat (už bylo na čase) problematiku kódování a řazení příspěvků v MySQL.

    Všechno co zde bude popsáno by mělo fungovat od verze 4.1 MySQL pro tabulky MyISAM. U tabulek typu InnoDB je nutné mít verzi 4.1.2 nebo vyšší.

    Nastavení znakové sady

    Nastavení znakové sady se provádí pomocí příkazu SET CHARACTER SET. Např.: SET CHARACTER SET utf8 nastaví znakovou sadu dotazu i znakovou výsledku na UTF-8. Tento příkaz je důležité odeslat ihned po připojení k databázovému serveru. Další důležitý příkaz je SHOW CHARACTER SET, po jeho odeslání získáme seznam všech znakových sad, které server podporuje.

    Podobného výsledku můžeme dosáhnout pomocí příkazu SET NAMES `utf8`, rozdíl je v tom, že takto nastavíme i znakovou sadu připojení k serveru.

    Znakovou sadu je vhodné nastavit databázi a tabulkám již při jejich vytváření. Toho docílíme takto:

    CREATE DATABASE jmeno_databaze DEFAULT CHARACTER SET utf8;

    CREATE TABLE pokus (
    ID int(6) not null auto_increment primary key,
    Text Text)
    DEFAULT CHARACTER SET utf8;

    Nastavení znakové sady výsledků SQL dotazu

    Toto je velmi užitečná vlastnost, která může ušetřit dost práce. Nejčastěji ji používám, když potřebuji vyexportovat data z MySQL do Excelu.

    Změna výstupního kódování je velmi jednoduchá: SET CHARACTER_SET_RESULTS = cp1250; a dostaneme data ve znakové sadě windows-1250.

    Nastavení porovnávání

    Porovnávání (angl. collation) je sada pravidel, které určují jak se budou řadit jednotlivé položky tabulky. Správné nastavení je důležité pokud chcete v databázi vyhledávat a potřebujete výsledky řadit podle české abecedy.

    Seznam porovnávání dostupných na serveru zjistíte pomocí SQL příkazu SHOW COLLATION;. Seznam obvykle obsahuje velké množství položek, proto je dobré výběr omezit pomocí operátoru LIKE, např. SHOW COLLATION LIKE 'utf8%';.

    Porovnávání se určuje při vytváření databáze nebo tabulky. Samozřejmě ho lze později změnit pomocí příkazu ALTER.

    CREATE DATABASE jmeno_databaze
    DEFAULT CHARACTER SET utf8
    COLLATE utf8_czech_ci;

    CREATE TABLE pokus (
    ID int(6) not null auto_increment primary key,
    Text Text)
    DEFAULT CHARACTER SET utf8
    COLLATE utf8_czech_ci;

    Literatura

    MySQL manuál