Jak nastavit webovému projektu kódování

V tomto článku bych se rád věnoval nastavování kódování, ale trochu více zeširoka, než je standardně uváděno. V naprosté většině seriálů o HTML se setkáte s poučkou, že stačí nastavit pouze správnou META hlavičku a kódování bude na věky věků nastaveno. Jenže potom začnete semtam i trochu programovat v PHP a zjistíte, že se na Apache uvidíte něco jiného, než při nasazení na reálný server.

Velmi dlouhou dobu bylo moje oblíbené kódování ISO-8859-2. A stále je, ovšem právě pracuji na projektu, ve kterém používám, resp. musím používat, databázi SQL a kromě konverze z ISO-8859-2 na UTF-8 při zápisu do DB a naopak z UTF do ISO při vytahování dat z DB jiné cesty prozatím není. SQLite jede totiž čistě UTF-8.

Bod 1. HTML
Jak jsem naznačil v úvodu, nebudu se zde zabývat pouze HTML. Ale na druhou stranu, když už jsem se o tom rozepsal, uvedu i tuto část. Nejdůležitější je samotný řádek s META tagem. Díky tomuto nastavení bude vědět prohlížeč, jaké kódování se má před vykreslením stránky nastavit.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>>Titulek</title>
<meta http-equiv=“Content-Type“ content=“text/html; charset=utf-8″ />
</head>

<body>

</body>

</html>

Bod 2. Soubory také v daném kódování
Všechny soubory, které chcete, aby se pod UTF-8 zobrazily, musí být také v UTF-8 uloženy. Od systému Windows XP je možné uložit soubor v kódování UTF-8, musíte vybrat kódování z nabídky v dialogovém okně Uložit jako.. Já jsem si oblíbil postupem času program PSPad. Dokonce pro psaní čistého PHP mi vyhovuje ještě více než vývojové prostředí (původně pro Javu) NetBeans IDE. V programu Poznámkový blok sice můžete uložit soubor v kódování UTF-8, nebo třeba i ve Windows-1250, ovšem soubor v kódování ISO-8859-2 v něm v současné verzi neuložíte (alespoň ne normálně čitelně).

Bod 3. Soubor .htaccess
Je to velmi podstatný soubor, protože díky němu jsme schopni nastavit několik zajímavých možností. Například pomocí souboru .htaccess můžeme nastavit práva v daném adresáři, chybové stránky (typu 404 atd.), přesmerováni, cache, povolování a zakazování určité IP, a mnoho dalšího. Často je také spojován s funkcí php mod_rewrite, protože právě přesměrování tuto funkci využívá. UTF-8 jako primární kódování pro PHP (což nejspíš ale stejně je defaultně, tuším) nastavíme, když přidáme do souboru .htaccess řádek:
# pouze UTF-8
AddDefaultCharset utf-8

Bod 4. Nastavení v PHP
Pomocí následujícího kódu nastavíme v PHP více věcí najednou, než pouze kódování.

<?php
// prostredi, jazyk, kodovani
date_default_timezone_set('Europe/Prague');
setlocale(LC_ALL, 'cs_CZ.UTF-8');
iconv_set_encoding('internal_encoding', 'UTF-8');
iconv_set_encoding('output_encoding', 'UTF-8');
?>

Závěr
Jestli existuje ještě nějaká osvědčená metoda, kterou neznám, rád se nechám přiučit. Od toho je tu diskuze. Kódy by měly být funkční, i když nevím, jestli se stále používají (jestli už nejsou zastaralé). Například set_locale se mi nikdy nepovedlo nastavit tak, aby funkce sort pro řazení prvků pole seřadila pole podle typických českých pravidel. Ale to jen tak na okraj. Třeba by tyto úryvky mohli i někomu ulehčit práci.

O Petr Fořt

Student ČVUT FJFI KSE ASI (Softwarové inženýrství v ekonomii). Zajímám se o počítače (programování, diagnostika chyb hw), hudbu. Mám rád grilování, táboráky, hraní na kytaru a srandu v dobré společnosti.