Nastavenie kódovania, diakritiky (Windows-1250)
Kódovanie, alebo diakritika.
Na webe sa stále stretávame s problémom správneho zobrazovania diakritiky pre slovenský alebo český jazyk. Toto zabezpečuje tzv. kódovanie jazyka a jeho správnym nastavením sa budeme zaoberať v tomto článku.
A. Predovšetkým sa musíte rozhodnúť aké kódovanie použiť.
Diakritiku podporujú tieto najbežnejšie používané kódovania:
1. UTF - 8
v MySQL: utf8, základné nastavenie: utf8_unicode_ci alebo utf8_general_ci
2. Windows - 1250
v MySQL: cp1250, základné nastavenie: cp1250_general_ci
3. ISO8859-2
v MySQL: latin2, základné nastavenie: latin2_general_ci
Vo väčšine prípadov sa zaobídeme v MySQL so základným nastavením. Môžem doporučiť UTF-8 alebo prípadne aj Windows-1250. Kódovanie ISO8859-2 je menej používané.
B. Základný popis nastavenia.
Kde všade je nutné nastaviť kódovanie?
Predpoklad správneho nastavenia je rovnaké nastavenie kódovania vo všetkých spomenutých prípadoch.
a). V hlavičke HTML dokumentu
b). Všetky súbory uložíme v tom istom kódovaní (*.html, *.php, *.sql, *.js, ...)
- doporučujem taký editor, ktorý tieto nastavenia umožňuje ( PSPad, Notepad++, a pod. )
c). V PHP skripte ( pre MySQL spojenie )
- v php skripte, v časti kde definujeme pripojenie k databáze
d). V MySQL databáze ( doporučujem používať nástroj PhpMyAdmin )
- v phpmyadmine nastavenie Overenie MySQL spojenia
- v phpmyadmine nastavenie Zotriedenie pri vytváraní DB
- v jednotlivých tabuľkách (DB) a jeho položkách Zotriedenie
C. Príklad nastavenia kódovania pre WINDOWS-1250:
1. V hlavičke (HEAD) HTML súboru sa nastaví CHARSET na WINDOWS-1250 takto:
Code
<meta http-equiv='Content-Type' content='text/html; charset=windows-1250'>
Pre PHP-FUSION sa toto kódovanie nastaví v locale/Slovak/global.php napr. takto:
Code
// Locale Settings
setlocale(LC_TIME, "sk","SK"); // Linux Server (Windows may differ)
$locale['charset'] = "Windows-1250";
$locale['xml_lang'] = "sk";
$locale['tinymce'] = "sk";
$locale['phpmailer'] = "sk";
2. V PHP skripte sa nastaví kódovanie pre Spojenie s mysql takto:
Code
$db_spoj = @mysql_connect($host, $user, $pass);
@mysql_query("set names cp1250",$db_spoj);
Pre PHP-FUSION sa toto kódovanie nastaví v súbore maincore.php napr. takto:
Code
function dbconnect($db_host, $db_user, $db_pass, $db_name) {
$db_connect = @mysql_connect($db_host, $db_user, $db_pass);
@mysql_query("set names cp1250",$db_connect); //<- toto je vložený riadok
$db_select = @mysql_select_db($db_name);
if (!$db_connect) {
die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><strong>Unable to establish connection to MySQL</strong><br>".mysql_errno()." : ".mysql_error()."</div>");
} elseif (!$db_select) { die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><strong>Unable to select MySQL database</strong><br>".mysql_errno()." : ".mysql_error()."</div>");
}
}
3. V PhpMyAdmine ( ver. 2.10.3 )pri vytváraní databáze nastavujeme kódovanie takto:

Vytváranie tabuliek z pohľadu kódovania.
Kódovanie v tabuľke sa nastavuje pomocou DEFAULT CHARSET a COLLATE
Príklad:
Code
CREATE TABLE IF NOT EXISTS `moja_tabulka` (
`menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`menu_name` varchar(100) NOT NULL DEFAULT '',
`menu_location` tinyint(3) unsigned NOT NULL DEFAULT '0',
`menu_order` tinyint(3) unsigned NOT NULL DEFAULT '0',
`menu_class` varchar(255) NOT NULL DEFAULT '0',
`menu_pages` text NOT NULL,
`menu_path` varchar(100) NOT NULL DEFAULT '',
PRIMARY KEY (`menu_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_general_ci AUTO_INCREMENT=1 ;
Ako takúto tabuľku vložíme do databázy:

stlačíme Vykonaj, tak sa nám riadne vytvorí

a pri kontrole štruktúry:

zistíme, že niektorým poliam (podľa typu) sa priradilo prednastavené kódovanie príslušnej databázy do ktorej sme tú tabuľku vkladali.

Sú to tie polia, kde sa automaticky predpokladá výskyt záznamu s diakritikou.
A ako sa vytvárajú tabuľky pre PHP-FUSION?
Pri spustení inštalácie sa spustí setup.php kde sú zadané všetky úvodné tabuľky aj s prednastaveným obsahom.
Príklad jednej tabuľky:
Code
$result = dbquery("DROP TABLE IF EXISTS ".$db_prefix."admin");
$result = dbquery("CREATE TABLE ".$db_prefix."admin (
admin_id TINYINT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
admin_rights CHAR(2) NOT NULL DEFAULT '',
admin_image VARCHAR(50) NOT NULL DEFAULT '',
admin_title VARCHAR(50) NOT NULL DEFAULT '',
admin_link VARCHAR(100) NOT NULL DEFAULT 'reserved',
admin_page TINYINT(1) UNSIGNED NOT NULL DEFAULT '1',
PRIMARY KEY (admin_id)
) TYPE=MyISAM;");
Všimnite si, že tu nie je zadaná hodnota DEFAULT CHARSET ani COLLATE. To preto, že pred inštaláciou musíme vytvoriť vlastnú databázu, kde nastavujeme kódovanie. A toto nastavenie sa prenáša ako DEFAULT-né aj do novoinštalovaných tabuliek, podobne ako je to popisované v predošlom príklade.
A na záver môžeme vykonať kontrolu správneho nastavenia kódovania celej databázy a u jednotlivých tabuliek.
Kontrola nastavenia databázy:

Kontrola nastavenia tabuliek:

D. Súhrn - nastavenia pre inštaláciu PHP-FUSION:
1. Zvolíme si typ kódovania.
2. Stiahneme si inštalačný balík PHP-FUSION a slovenský preklad vo zvolenom kódovaní.
3. Ak nie je k dispozícii PHP-FUSION a slovenský preklad vo zvolenom kódovaní, musíme skontrolovať všetky súbory a uložiť ich vo zvolenom kódovaní.
4. Túto kontrolu pre istotu urobíme aj v prípade, ak je PHP-FUSION a slovenský preklad vo zvolenom kódovaní k dispozícii.
5. Naviac ešte musíme skontrolovať a prípadne upraviť v slovenskom preklade kódovanie v súbore global.php podľa horeuvedeného návodu. Ďalej skontrolujeme a prípadne upravíme súbor maincore.php(Spojenie s mysql) podľa horeuvedeného návodu.
6. Pri vytváraní databázy nastavíme kódovanie podľa horeuvedeného návodu.
7. Teraz už môžete zahájiť samotnú inštaláciu PHP-FUSION. Ďalej sa riaďte priloženým návodom k inštalácii PHP-FUSION.
Autor: sepko
Web: www.sepeter.sk
Komentáre
Pridať komentár
Pre pridanie komentára musíte byť prihlásený.



