html charset versus meta-tag

From: Spock (spock@bfs.cz)
Date: 19. 03. 2000, 14:37 CET


>Priznam se, ze to jsem nepochopil (vsak taky nejsem zadnej html guru :-).
>Hlavicku s iso-8859-2 tam samozrejme davam taky. Ovsem hlavicka prece
>nestaci, musi to byt napsane v ISO 8859-2, nebo ne? Ja pisu html v postarsi
>Tarantuli rucne, pak prevedu ve FP celej kod do 8859-2 (FP tam moc skody
>neudela, pokud tam v nem nedelas zmeny) a nasledne zase ruco doladim ten
>html kod do konecne podoby, ale veskery text uz mam v 8859-2 (a tudiz velmi
>spatne citelny napr. v Notepadu).

to je ale hroznej masochismus...  zkusim to _strucne_  :) vysvetlit:

drtiva vetsina dnesnich browseru urcenych pro svet out of usa
ocekava implicitne text stranky v kodu 8859-1 neboli iso latin 1.
tytez browsery provadeji take automaticke prekodovani stranky
do sveho "materskeho prostredi" - tedy charsetu, ktery pouziva
os a potazmo tedy i uzivatel.

browser provozovany na win, at uz na na cz lokalizaci nebo na
normalnich win s nastavenym cz prostredim se tedy bude vzdy
snazit prekodovat text dokumentu do win-1250. POKUD OVSEM
NEDOSTANE zpravu, ze dokument je kodovan v jinem charsetu
nez 8859-1, vyjde z kodovani 8859-1 a provede "prekodovani"
do win-1250. vysledkem je jenom zmrseny text. stejne by to taky
dopadlo i v hypotetickem pripade, kdy by cele win jely v 8859-2
(coz nejde). zase by prekodoval chybne.

tu zpravu o charsetu pouzitem v dokumentu muze dostat browser
v http hlavicce primo ze serveru, nebo v hlavicce emulovane tagem
meta. protokol http1.1 definuje pro header content-type i mozny
"pridavek" ve tvaru ; charset=<code> kde <code> je prave nazev
pouziteho charsetu. http header ze serveru by tedy mel (pro stranku
psanou ve win !) vypadat napr. takto:
Content-Type: text/html; charset=Windows-1250

Ale ne kazdy si muze konfigurovat server a krome toho na serveru
pochopitelne nemusi byt (a taky nebyvaji) vsechny html ve stejnem
charsetu. pokud tedy negenerujes celou stranku, a to vcetne vsech
headeru, nejakym scriptem, muzes primo v hlml pouzit meta tag,
ktery bude tu potrebnou hlavicku pro browser emulovat.

charset=<code> tedy informuje browser o tom, v jakem kodovani
JE NAPSAN PRIJATY DOKUMENT. browser pak si TOTO kodovani
dosadi misto implicitniho 8859-1 a vyjde z neho pri prekodovani
dokumentu do sveho "domovskeho" charsetu, resp. do kodovani
pouziteho v operacnim systemu, v nemz browser bydli.

takze v headeru nebo meta-tagu musi byt vzdy jen TEN kod, ktery je
pouzit v prave posilanem dokumentu. tedy NIKDY NE kod, ve kterem
se ma dokument ZOBRAZIT u uzivatele. ty jako autor stranky prece
nemuzes tusit, jaky charset pouziva ten ktery ctenar stranky. ale velmi
dobre to vi prave jeho browser. a dostane-li ctenaruv browser zpravu,
ze nacitany html JE NAPSAN v charsetu xyz, provede prekodovani
xyz => ctenaruv charset a text bude v pohode.

z receneho plyne, ze si muzes v pohode psat stranky ve kteremkoli
charsetu, ktery umi czesky a ktery je stadardizovan. proste uvedes
TENTO charset do meta (nebo do headeru, pokud budes cely vystup
generovat scriptem).

A pokud jde o browsery-vykopavky, ktere neznaji http1.1 a/nebo ani
meta tags, pripadne neumeji prekodovavat, potom ti nepomuze ani
svecena voda, at to napises v cemkoli. nekdy se trefis, casteji ne.
chces-li osetrit i takove pripady, pak zbyva jen stara cesta: na vstupni
strance dat vybrat kodovani a stranky pak budto generovat (prohnat)
specializovanym konverznim scriptem nebo, nedejboze, udrzovat
aktualnich x verzi v ruznych charsetech, coz je nelidska prace. =:-o
Ale bohuzel z vlastnich zkusenosti vim, ze jen velice maly zlomek tech
"obycejnych", laickych useru vi, jake kodovani pouzivaji, resp. ze vubec
nejake existuje. ti chytejsi pak zkouseji ruzne volby az se chytnou,
ostatni ti stejne napisou, ze jses vul a ze stranky nejdou precist. ;-)

uff! tak to by snad stacilo... :)))

Bye, Spock.



This archive was generated by hypermail 2.1.2 : 10. 08. 2001, 14:28 CEST