Databáza verzie MySQL 4.1 a slovenčina
Databázy na servere s verziou MySQL 4.1 sa zriaďujú bez nastavenej defaultnej znakovej sady (tzn. Latin1).
Pre správnu funkciu slovenských znakov je potrebné, aby si používateľ nastavil znakovú sadu v ktorej bude databáza kódovaná. To spravíte napr. cez phpMyAdmin SQL príkazom:
ALTER DATABASE nazov_databázyDEFAULT CHARACTER SET cp1250
DEFAULT COLLATE cp1250_slovak_sk;
Týmto si užívateľ nastavil pre databázu názov_databázy východzie kódovanie na windows-1250 (cp1250) a triedenie slovenské, ktoré rozlišuje veľkosť písmen.
Ďalším príkladom je možné nastaviť znakovú sadu UTF-8 a slovenské triedenie, nerozlišujúce veľkosť písmen (doporučujeme každému):
ALTER DATABASE nazov_databázy
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_slovak_ci;
Ak potom vytvoríte nasledujúcu tabuľku s dvoma stĺpcami ID a hodnota:
CREATE TABLE sk_test
(ID INT NOT NULL AUTO_INCREMENT ,
hodnota VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_slovak_ci, PRIMARY KEY (ID)
) TYPE = MYISAM CHARACTER SET utf8 COLLATE utf8_slovak_ci;
nie je problém do nej vkladať slovenské znaky a korektne funguje i triedenie znakov ako je "ch".
Pri ďalšom preskúmaní manuálových stránok zistíte, že znaková sada predávaná serverom sa dá zmeniť prostredníctvom SET NAMES - viz http://dev.mysql.com/doc/mysql/en/set-option.html
Pre výstup v patričnom kódovaní (napr. windows-1250) na webovú prezentáciu stačí zadať po obvyklom pripojení príkaz MySQL_Query("SET NAMES 'cp1250'");Takto by mohla vypadať časť kódu pre pripojenie k databázy:
$link = MySQL_Connect("adresa_databazoveho_serveru", "nazov_uzivatela", "heslo")
or die("Nedá sa pripojiť"); //pripojenie k serveru
MySQL_Select_DB("nazov_databaze") or die("Nejde vybrať databázu"); //výber databázy
MySQL_Query("SET NAMES 'cp1250'"); //prekóduje DB do windows-1250
// .....ďalšie príkazy a dotazy na databázu
MySQL_Close($link); //ukončenie spojenia
Pod odskoky v hornej časti stránky sú uvedené dva príklady pre kódovanie windows-1250 a utf-8.
Manuálové stránky (Chapter 10. Character Set Support): http://dev.mysql.com/doc/mysql/en/charset.html