SaCzech-Uj: Návod k použití

SaCzech-Uj se skládá ze skupiny jednoúčelových konverzních programů. Každý z nich překládá dokument z jediného výchozího kódu do jednoho kódu cílového, jehož jméno je součástí jména programu. Členy rodiny SaCzech-Uj tedy jsou toASCII.cgi, toCP1250.cgi, toKEYBCS2.cgi, toMAC.cgi, atd. (též zvané ascii.cgi, 1250.cgi, kam.cgi, mac.cgi, atd.). Tyto programy předpokládají, že budou spuštěny jako CGI skripty a využívají příslušné proměnné prostředí. Nelze je spouštět samostatně (alespoň ne jednoduše).

Obsah:

Základy - URL stránky

Stránku napište v jednom z osmibitových kódu, které SaCzech-Uj zná, a který byl Vámi (nebo správcem serveru) při instalaci definován pomocí proměnné $source jako kód zdrojový. Pokud chcete, aby stránka byla překódována, musíte explicitně vyznačit, že je napsána v tomto zdrojovém kódu: Na úplný začátek stránky (jako první "slovo" na prvním řádku; můžou mu případně předcházet jen prázdné znaky) zařaďte komentář <!--MYCHARSET=kód-->. Pokud tento komentář chybí, nebo když kód v něm uvedený není shodný s hodnotou proměnné $source, stránka bude odeslána beze změny (bude považována za stránku napsanou v ASCII, kterou není třeba překódovávat).

Stránku vystavte, jak je obvyklé. Jediné, co se změní, bude URL, kterým je třeba se na ni odkázat. Jestliže URL stránky bez překódování by bylo

http://www.kdesi.ca/user/cesta/stranka.html
bude URL téže stránky při požadavku jejího překódování do sedmibitového ASCII např.
http://www.kdesi.ca/user/cgi-bin/ascii.cgi/cesta/stranka.html
Předpokládám, že URL cesta ke kódujícím skriptům je http://www.kdesi.ca/user/cgi-bin. Můžete použít libovolný ze skriptů toXXX[.cgi]. nebo yyy[.cgi] (kde XXX či yyy jsou jména kódů popsaná v předchozích kapitolách). Pokud cesta ke kódujícím skriptům je http://www.jinde.cz/cgi-bin (globální CGI adresář serveru), bude URL požadující překódovanou stránku mít tvar:
http://www.jinde.cz/cgi-bin/ascii.cgi/user/cesta/stranka.html

Odkazy tohoto typu však předpokládájí, že předem víte, jaký kód bude uživatel vyžadovat. To často nemusí být pravda. V takovém případě doporučuji použít skript whichcode[.cgi] a URL

http://www.kdesi.ca/user/cgi-bin/whichcode.cgi/cesta/stranka.html
případně
http://www.jinde.cz/cgi-bin/whichcode.cgi/user/cesta/stranka.html
Skript whichcode uživateli oznámí, že cílový dokument obsahuje diakritická znaménka a umožní mu zvolit kód, který považuje za optimální.

Zachování kódu při odkazech

Je přirozeným požadavkem, aby uživatel vybíral kód jen jednou a při odkazech na další dokumenty z téhož zdroje se uchovávala informace o zvoleném kódování. Nejjednodušší cestou je relativní odkaz. Když do dokumentu vložíte odkaz pomocí značky
<A HREF="kapitola1.html">První kapitola</A>
klient přepracuje relativní URL kapitola1.html na absolutní. Vyjde přitom z URL dokumentu, obsahujícího značku. Pokud bylo původní URL dokumentu například http://www.kdesi.ca/user/cgi-bin/toCP1250/cesta/obsah.html, povede zmíněný odkaz k dokumentu http://www.kdesi.ca/user/cgi-bin/toCP1250/cesta/kapitola1.html. Informace o kódu byla zachována.

Pozor! Chcete-li využívat pro uchování kódu relativní odkazy, nesmíte v dokumentu použít značku <BASE>, která určuje základní URL dokumentu. Kdybyste ji použili, budou všechna relativní URL vztažena k lokátoru, definovanému touto značkou, nikoli k URL, pod kterým klient získal stránku.

Absolutní odkazy se zachováním kódu distribuovaná verze SaCzech-Uju nezvládne. Musíte použít whichcode[.cgi]. Pokud chcete, bylo by možno jednoduše zajistit provádění substituce za řetězec __CHARSET__ stejným způsobem jako u programu SaCzech-U. Stačí vložit např. do skriptu mac.cgi těsně před příkaz print $_; (řádek č. 29) následující tři řádky:

s/to__CHARSET__/toMAC/g;
s/charset=__CHARSET__/charset=MAC/g;
s/__CHARSET__/mac/g;
(tři separátní substituce jsou mnohem rychlejší než jedna substituce se třemi alternativními vzory (to|charset=|)). Případně jen ty z těchto tří substitucí, které budete používat. Podobně pro ostatní skripty. Tyto substituce mohou ale výrazně zpomalit konverzi. Pokud je nutně nepotřebujete, vyhněte se jim.

Obrázky se nekódují!

SaCzech(-Uj) je selektivní. Kóduje jen soubory s určitými příponami (implicitně .html, .htm a .txt; jak je změnit se dočtete v kapitole Pod kapotou v dokumentaci původního programu SaCzech). Dostane-li k překódování soubor s jinou příponou, odmítne se akce účastnit a přesměruje klienta přímo na dotyčný soubor. Důsledkem je, že klient získá soubor v původním tvaru beze změny kódování.

Díky tomuto mechanismu můžete na své stránky vkládat relativní odkazy na obrázky, zvuky a další druhy dat, kterým by překódování rozhodně neprospělo.

Jestliže se na stránce vyskytne značka

<IMG SRC="obraz.gif">
a URL stránky je http://www.kdesi.cz/cgi-bin/toASCII/cesta/stranka.html, bude klient po serveru požadovat http://www.kdesi.cz/cgi-bin/toASCII/cesta/obraz.gif. Server spustí skript toASCII. Ten však zjistí, že je po něm požadováno kódování souboru s příponou .gif. Místo aby se pustil do díla, odpoví klientovi "hele s tímhle já nechci nic mít, vezmi si rovnou ten soubor". Klient si ho vezme a vše funguje k plné spokojenosti všech zúčastněných.

Změna výchozího kódu

uprostřed dokumentu není možná. SaCzech-Uj ignoruje všechny komentáře <!--MYCHARSET=kód--> kromě jediného, který je umístěn na úplném začátku dokumentu. Pokud máte různé části dokumentu v různých kódováních, použijte nejprve např. SaCzech-U ke konverzi celého dokumentu do jediného kódování.

Milovníci patologických případů prostě přijdou zkrátka!

Nabídka kódů

Často je vhodné nabídnout uživateli přímo na stránce možnost změny kódu této stránky. Takovou nabídku je nutno zkonstruovat ručně (nebo předem pomocí programu SaCzech-U a pak ručně "vlepit" do dané stránky).

SaCzech-Uj a CGI

SaCzech-Uj zatím metody http a guess nepodporuje.

Tipy, triky, rizika

Prosím, obraťte se přímo na dokumentaci původního programu SaCzech.