Mod_czech FAQ

  1. Q: Proč modul kódovací kontext udržuje pomocí prefixů?
    A: V prvé řadě, modul požadovanou znakovou sadu detekuje u většiny prohlížečů správně sám, takže informace o zvoleném kódování nepotřebuje udržovat. Automatická detekce kódování ale většinou selže při přístupech na vaše stránky z ciziny, protože se nedá předpokládat, že tam mají na svých prohlížečích instalované vaše národní fonty. V tom případě je třeba, aby se informace o zvoleném kódování při následování hypertextových odkazů neztratily.

    Je více možností, jak kódovací kontext udržovat, ale zdá se nám, že použití prefixů má nejvíce výhod (a nejmenší nevýhody):

    Ale i postfixy mají stále svůj význam, proto je mod_czech podporuje i nadále. Jak jinak byste změnili kódování v relativních odkazech?

  2. Q: Jak je to s cacheováním překódovávaných dokumentů?
    A: Způsob cacheování závisí na několika faktorech:

    K těmto informacím nicméně ještě poznámka. Jestliže bude dokument vyžádaný protokolem HTTP/1.0 uložen do cache (při CacheEncodedDocs On), získají tuto cacheovanou verzi i klienti komunikující protokolem HTTP/1.1, a to i když bude kódována ve špatné znakové sadě!
    Jinak řečeno: Nové prohlížeče komunikující protokolem HTTP/1.1 (MSIE 4.0, Netscape 4.0, ...) by neměly s cacheováním problémy, kdyby neexistovaly prohlížeče starší, kterých je však stále většina.

  3. Q: Lze modul donutit k podpoře znakových sad i pro jiné jazyky?
    A: Ano, modul může podporovat i jiné znakové sady, než s jakými je dodáván. Bližší informace viz soubor README v adresáři charconv v distribuci modulu.
  4. Q: Jak a zda zakazovat autodetekci požadované znakové sady?
    A: Nejprve proč ano: Jestliže bude vyžadované kódování v URL explicitně uvedeno (ve formě kódovacího prefixu), bude možné všechny dokumenty cacheovat bez omezení a nebudou vznikat problémy zmiňované v odpovědi na otázku cachování překódovávaných dokumentů.
    Proč ne: Především je pro uživatele značně nepohodlné muset si při každém novém přístupu na váš server volit správné kódování - problémy s různými znakovými sadami by uživatele neměly vůbec zatěžovat. Za druhé, URL obsahující kódovací prefix je těžké předat jiným lidem, protože mohou používat jiný www prohlížeč než vy. Dále, automatizovaní klienti typu webcopy si se stránkou nabízející různá kódování neumějí poradit. Atd. Nevýhod je podstatně více než výhod.

    Nakonec, jak toho dosáhnout: Jestliže vás od toho kroku výčet nevýhod neodradil, použijte direktivy GuessCharset Off a FallbackCharset chcp k zákazu autodetekce znakové sady, a direktivu

    SetEnv ignore_charset "iso-8859-1,iso-8859-2,windows-1250,x-mac-ce,utf-8,..."

    použijte pro HTTP/1.1 klienty, kteří v HTTP hlavičce posílají položku Accept-Charset (v uvozovkách uveďte názvy všech modulem podporovaných znakových sad, oddělené čárkami).

  5. Q: Jak zajistit, aby se pro klienty přistupující z ciziny nedetekovala znaková sada automaticky?
    A: Máte-li zapnuté HostNameLookups on, můžete v srm.conf nastavit (pro Českou republiku a Slovensko):

    RewriteCond %{REMOTE_HOST}  !.(cz|sk)$
    RewriteRule !^/(asc|iso|win|mac|kam|lat|uni|chcp)/  -  [C]
    RewriteRule ^/(.*)          /chcp/$1

    Není to vyzkoušené. Nezapomeňte však, že někteří klienti mají pouze IP, nikoli síťové jméno. (Zajímalo by mne, zda to bude fungovat dostatečně uspokojivě! Máte-li lepší řešení, sem s ním!)

  6. Q: Jak do své stránky vložit odkaz na stránku v jiném kódování?
    A: Předpokládejme, že chcete, aby dokument http://mujserver/cesta/dokument.html byl v prohlížečích zobrazován bez háčků a čárek, tj. v US-ASCII. Máte několik možností, jak to zařídit:
  7. Q: Jak získat textový dokument v původním formátu, bez překódování?
    A: Máte různé možnosti:
  8. Q: Jak se obejít bez SaCzechovské direktivy <!--mycharset=xxx--> ?
    A: Mod_czech má ve verzi 3.x  tolik prostředků pro nastavení kódování, že umožňuje naprosto se bez této SaCzechovské direktivy <!--mycharset=xxx--> obejít. Představte si následující situaci:

    V adresáři máte stovky souborů následujících čtyř druhů: hlavní soubory, do kterých server prostřednictvím SSI vkládá z jiných souborů hlavičku, vlastní tělo a patu dokumentu. Těla dokumentů jsou ale psána v různých kódováních, což jste dosud vyznačoval(a) právě zmíněnou SaCzechovskou direktivou.

    Jak se bez této direktivy obejít?

    Jedno z možných řešení je následující:
    Zkuste v názvech souborů najít nějaký vzor, který by byl pro těla v každém z použitých kódování společný. V konfiguračním souboru pro každý z těchto vzorů nastavte (např.):

    <Location ~ "/ab*$">
        SourceCharset CP852
    </Location>

    Další (samozřejmou) možností je umístit soubory v různých kódováních do různých adresářů. (Jestliže máte momentálně všechny soubory v jednom společném adresáři, můžete k jejich rozdělení podle kódování využít např. grep, příp. upravit v hlavních souborech cesty pomocí  sed.) V každém adresáři pak nastavte vhodné kódování direktivou SourceCharset.

    Není-li souborů v jiném kódování mnoho, můžete zapnout multiviews (Option +Multiviews) a těmto výjimečným souborům přidat extenzi vyjadřující příslušné kódování.