C~esky' web?
Videli jste uz nekdy kvalitntni httpd a browser s podporou ceskych kodovych stranek? Ja tedy ne. Napsat kvalitni modul pro podporu cestiny do nejakeho httpd je totiz relativne velky problem.

Nejprve se podivejme na kodovani cestiny, ktera jsou k dispozici: us-ascii, iso-8859-1, iso-8859-2, windoze-1250, windoze-1252, mac-ce, pc-latin1, pc-latin2, cp-895 (br. kamenicti), koi-8cs a cork. Jeste jsou dalsi, ale ty jsem na internetu nastesti nevidel. Prvni problemy jsou s nazvy jednotlivych kodovani, nebot kazda kodova stranka ma alespon 3 nazvy nebo zapisy. Napr win-1250 se da zapsat jako windows-1250, windows-1250, win1250, CP1250, CP-1250, 1250, atd, atd. Kdyz k tomu pricteme to, ze ne kazdy webserver a browser ma prevodni tabulky na vyse uvedene kodovani...

Vsechna reseni $SUBJ ktera jsem videl pracovala bud' jako cgi-script, ktery prekodovaval stranky podle vyberu uzivatele (IMHO zcela nevhodne), nebo jako modul do httpd, ktery si sam zjisti co ma uzivatel za browser a podle toho mu podstrci text/html v patricne podobe. Prvni variantou se nema smysl zabyvat, nebot je nepouzitelna. To uz je snad jednodussi si nastavit jiny font nez cekat na reload stranky.

Browser tedy posle serveru request na nejaky dokument a ten musi usoudit, v jake codepage ho client chce. To se da udelat bud' z User-agent: nebo Accept-charset. Druha moznost vypada mnohem jednoduseji, ale neni tomu tak, nebot a) ne kazdy browser ji podporuje (napr. starsi M$IE) a b) moznosti zapisu je mnoho (napr. czech/iso-8859-1, cs_CZ.iso-8859-1, CS-iso-8859-1, cz.iso-8859-1, nebo jednoduse iso-8859-1, pricemz u Windoze-1250 je moznosti mnohem vice, viz vyse). Dalsim problemem je, ze nektere browsery neumoznuji nastavit o jakou kodovou stranku si maji zadat, takze napriklad neustale chteji iso-8859-1, coz je pro cestinu absolutne nevhodne. Z User-Agent: se da zjistit take plno informaci, mozna dokonce spolehliveji. Pokud se zde vyskytuje napriklad X11 je jasne, ze nema cenu posilat win-1250 a obracene. Takze tato moznost mi pripada schudnejsi. Staci jen vyrobit dostatecne mnozstvi prevodnich tabulek ...

Kodovou stranku jiz mame, staci to jen oznamit klientovi. Standardne se to dela pres Content-type: text/plain; charset=us-ascii, popripade META tagem (Takto to resi vetsinou prekodovavaci CGIcka). Zde na plne care zklamal lynx, ktery nezvladl Content-type: text/html; charset=iso-8859-2. Takze je potreba jeste dodefinovat pravidla komu neposilat informace o kodove strance :-).

Toto reseni neni samozrejme kompletni, nebot napriklad diakritika ve formularich se neprenese korektne. Implementace metody POST je vubec u vetsiny browseru (=vsech) velmi bidna (=nepouzitelna pro cokoliv jine, nez us-ascii). Dalsim problemem jsou CGIcka, ktera si musi sama delat prekodovavani stdin/stdout.

Vice informaci o problemech s cestinou najdete na www.cestina.cz.