Kódování češtiny v dokumentech

Každý webový dokument je, coby čistý text ve své prapodstatě, napsán v některém ze znakových kódování (znakové sadě, character set, charset, character encoding). Obvyklým kódováním u anglických dokumentů je ISO-8859-1, u českých ISO-8859-2 či podobné WINDOWS-1250; rozšířeným univerzálním kódováním je UTF-8. Je nutné zajistit, aby kódování, ve kterém je dokument skutečně napsán, souhlasilo s kódováním, které cílový webový prohlížeč použije při jeho interpretaci/dekódování. Při nesouladu uvidí člověk, který si váš web bude prohlížet, více nebo méně nesrozumitelný text.

Při interpretování staženého webového dokumentu prohlížeč zjišťuje, v jakém kódování je dokument napsán, podle následujících ukazatelů:

  • HTTP hlavička Content-Type
  • značka meta ve zdrojovém textu dokumentu
  • implicitní nastavení předpokládaného kódování v prohlížeči
Tento seznam je uspořádán podle priority: to znamená, že zašle-li server při přenosu dokumentu hlavičku Content-Type se specifikovaným kódováním, vezme jej prohlížeč za směrodatné. Pokud adekvátní hlavička přítomna není, podívá se prohlížeč na případné značky meta ve zdrojovém textu dokumentu. Pokud ani ta není v požadované formě přítomna, přistoupí se k implicitnímu nastavení prohlížeče.

Webový server na Aise (čili www.fi.muni.cz) vždy posílá zmíněnou HTTP hlavičku. Jakou znakovou sadu v této hlavičce avizovat, je rozhodnuto podle následujích prvků (opět v prioritním pořadí):

  • přípona souboru s dokumentem na Aise
  • direktiva AddDefaultCharset v adekvátním souboru .htaccess
  • implicitní nastavení webového serveru (ISO-8859-2)

První bod se aplikuje jen za situace, kdy adresář (na Aise), který dokument obsahuje, má unixové oprávnění r pro ostatní. Dokument, jehož URL pak bude http://www.fi.muni.cz/~xnovak99/stranka.html, může být na serveru uložen pod názvem stranka.html.kodovani, přičemž takto specifikované kódování bude zobrazujícímu prohlížeči oznámeno HTTP hlavičkou.

Direktiva AddDefaultCharset má syntaxi AddDefaultCharset kódování a její přítomnost (na vlastním řádku) v souboru .htaccess v adresáři s webovými dokumenty způsobí, že pro tyto dokumenty bude direktivou specifikované kódování oznamováno prohlížeči HTTP hlavičkou. Namísto platného kódování je možné v parametru uvést i slovo Off, v důsledku čehož vyřazujete z činnosti ovlivňování kódování HTTP hlavičkou úplně (tj. přistoupí se k 2., resp. 3. bodu v prvotním výčtu uvedeném výše).

Z uvedeného mj. vyplývá, že ke značce meta, kterou jste vymezili kódování v samotné stránce, se bude přihlížet jen tehdy, když v .htaccess uvedete AddDefaultCharset Off.

Serverem podporovaná tvorba vícejazyčných mutací dokumentů

Součástí požadavku o konkrétní stránku, který zasílá webový prohlížeč serveru, je i prioritně uspořádaná specifikace jazyků, v nichž prohlížeč stránky preferuje. (Tento preferenční seznam v prohlížeči nastaví uživatel.) Na serveru jsou různé mutace jedné stránky uloženy v různých souborech v jednom adresáři, přičemž jednotlivé jazykové mutace jsou označeny dodatečnou příponou v závisosti na jazyku. Kupříkladu dokument http://www.fi.muni.cz/~xnovak99/stranka.html může být na disku reprezentován soubory stranka.html.cs, stranka.html.en a stranka.html.pl (česká, anglická a polská verze).

Pokud server má k dispozici více jazykových variant požadovaného dokumentu, vrátí prohlížeči tu z dostupných variant, která nejvíce vyhovuje prioritám prohlížeče. Pokud žádná z preferovaných jazykových variant dostupná není, vrátí server verzi českou.

Uvedené chování je (na straně serveru) potlačeno, pokud je splněna alespoň jedna z podmínek:

  • je dostupný soubor odpovídající jménu dokumentu v URL (tj. bez jazykové přípony)
  • v adresáři, kde nemá být multijazykové verzování bráno v úvahu, je přítomen soubor .htaccess s řádkem Options -MultiViews
  • adresář, kde nemá být multijazykové verzování bráno v úvahu, nemá unixové oprávnění r pro ostatní
To mj. znamená, že umístíte-li do jednoho adresáře soubory stranka.html.cs, stranka.html.en a stranka.html, tak uživateli na požadavek na dokument stranka.html bude vždy vrácen obsah souboru stranka.html.

Kombinování jazykového a kódového multiverzování

Není možné kombinovat oba systémy pomocí přípon souborů (např. stranka.html.cs.utf-8 nebo stranka.html.utf-8.cs).

Vzhledem k tomu, že rozlišit jazykové verze lze pouze příponami, je možné stanovovat kódování u kažého souboru zvlášť pouze pomocí meta tagu ve zdrojovém textu dokumentů (přičemž v .htaccess je uvedeno AddDefaultCharset Off).