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
metave zdrojovém textu dokumentu - implicitní nastavení předpokládaného kódování v prohlížeči
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
AddDefaultCharsetv 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
.htaccesss řádkemOptions -MultiViews - adresář, kde nemá být multijazykové verzování bráno v úvahu, nemá unixové oprávnění
rpro ostatní
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).
fi
muni