Čeština / cestina

Diakritika na HTML stránkách.

O problémech s českými fonty píšu na stránce o formátovacích chybách. Konkrétní znaky různých kódování lze najít v kódových tabulkách. Rozpoznat problém můžete na diagnostické stránce. V tomto textu vyjadřuji pouze vlastní názory a poznatky.

Co je kódování - Nejčastější kódování - Argumenty pro Windows-1250 - Argumenty pro ISO 8859-2 - Různá řešení - Nastavení v prohlížeči - Automatické meta nastavení - Překódování na serveru - Altavista a spol. - Unicode - Speciální znaky - Opera - Mozilla, doctype a windows-1250 - Překódování

Co je kódování

Počítač chápe každé písmenko jako číslo od 0 do 255 (jeden bajt).

Američané a Angličané (a programátoři) si vystačí se 128 znaky, protože se John Wicliff (britská obdoba Mistra Jana Husa) nepletl do věcí, kterým nerozuměl, čili nemají nabodeníčka. Těmto základním 128 znakům se říká ASCII.

Dalšími čísly od 128 do 255 se označily diakritizované znaky jazyků západní Evropy, a tak vznikl kód Latin-1. V něm české znaky nejsou (s výjimkou á a í).

Pro neazbukové jazyky střední a východní Evropy vznikly různé kódy, které zachovávají význam prvních 128 znaků ASCII (normalni pismena), ale dalších 128 znaků si definují po svém. A právě různá přiřazení diakritizovaných znaků číslům od 128 do 255 se označují jako kódování.

Problém:

Hodně různých lidí si usmyslelo, že udělají kódování češtiny, jenomže to každý udělal jinak.

Nejčastější kódování

V poslední době převládají dvě kódování češtiny:

  1. ISO 8859-2
  2. Windows-1250

ISO 8859-2 je, jak už název napovídá, kódování standardnější, používané na Unixu a na Linuxu, ale i v mnoha windowsáckých programech. Někdy se označuje jako Latin 2, Microsoft jej nazývá "Středoevropské jazyky (ISO)".

Windows-1250 je preferováno na Windowsech a jeho obliba roste zejména kvůli tomu, že jej používá FrontPage jako základní kódování (třebaže se dá přepnout).

Další kódování jako kód bratří Kamenických, Mac nebo čeština pro Dos se dnes již na webu užívají tak zřídka, že jim nyní nebudu věnovat pozornost. Kód Unicode je zase hudbou vzdálené budoucnosti.

Rozdíly

Můžete si prostudovat kompletní grafické znázornění znaků jednotlivých kódování v tabulkách.

Nejpoužívanější kódování ISO 8859-2 a Windows 1250 se v oblasti českých znaků od sebe odlišují pouze v šesti znacích -- š, ž, ť, Š, Ž, Ť. Pro zájemce jsem napsal rozdíly kódování mezi ISO a WIN pro nahrazování altem.

Argumenty pro windows-1250

Notepad (nejjednodušší texťák, ve kterém se to přepnout nedá) používá pouze kódování windows-1250. Kdo chce tedy používat pro úpravy stránek Notepad (a třeba já chci), ten buď musí používat windows-1250, nebo se naučit těch psát v ISO pár znaků pomocí altu s čísly.

Mnohé vyhledávače publikují výsledky primárně v kódu Windows (konkrétně zjištěno u jinak perfektního Redboxu). Protože si s kódováním nelámou hlavu, vypisují úryvky v tom kódu, ve kterém ho našly, takže je to někdy trochu nečesky.

Jste-li tvorové windowsáčtí (a budete navždy), používejte kódování Windows. Dostanete se do menšího počtu problémů.

Argumenty pro Iso-8859-2

Pokud nebudete stránky psát v Notepadu nebo nejste zaměstnanci firmy Malýměkký, rozhodně doporučuji kódování ISO 8859-2. Já jsem dříve používal Windows-1250, nyní ISO 8859-2.

Zásadní vtip je v tom, že ISO je kódování výhradně používané v Unixu a Linuxu. Samozřejmě že Unixovské a Linuxovské programy windowsácké kódování nějak zvládnou (přinejhorším se ty programy trochu přepíšou), ale nedělá to dobrotu.

Dalším sice pochybným (přesto často uváděným) argumentem je fakt, že je to kódování "standardní".

Různá řešení

Fajn, máme tady několik různých kódování. Text se prostě napíše v některém z nich. Teď jde o to JAK říci prohlížeči u čtenáře (obecně klientovi), v jakém kódování text je, aby se to správně zobrazilo:

Přepínání v prohlížeči

Moderní prohlížeče (od verze tuším 3, kromě Opery) umožňují překódovat text přímo na klientském počítači. Prostě si čtenář vybere kódování (je to někde v nabídce, většinou zobrazit / kódování) a zkouší různá kódování, dokud to není česky. To je relativně jednoduché. Problém je se staršími prohlížeči, jenomže ty dnes, doufám, už skoro nikdo nepoužívá.

Větší problém je s uživateli. Nemylme se -- jen mizivé procento uživatelů umí kódování přepnout, třebas je to prosté. Takže lepší je to nastavovat automaticky.

Automatické meta nastavení

Aby nemusel čtenář mých stránek několikrát zkoušet a přepínat, aby zjistil, v jakém kódování to mám, umisťuji do hlavičky stránek jeden meta tag:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
nebo: <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">

Říká to, že stránka je psána v tom kterém kódování. Prohlížeč to pochopí jako ekvivalent http hlavičky a text nabídne v onom kódování.

Zadávání tohoto tagu nabízejí některé editory automaticky (například dobře nastavený FrontPage 2000: Tools / Web Settings / Language / Default HTML Encoding).

Pozor, fatální problémy nastupují, pokud do toho tagu napíšete špatný kód. Pak si česky nepřečte nikdo (někde to pak nejde přepnout) a je to mnohem horší, než tam nenapsat nic.

Překódování na serveru

Pokud server i klient používají http protokol 1.1 a na serveru běží program pro automatickou změnu kódu, není třeba se starat vůbec o nic. Je-li tomu tak, ví zpravidla správce serveru.

Nejlépe to šlape na serverech Apache, pokud je tam doinstalován modul češtiny. Nejoblíbenější alternativní program pro jiné servery je SaCzech [sáček] od Pavla Satrapy, který využívá CGI.

Zjistil jsem, že takový program je možné využívat, pokud publikujete stránky například na serveru www.volny.cz.

Jak to funguje

Klient zašle serveru požadavek zároveň se seznamem různých kódování, která akceptuje. Sever stránku do nějakého takového převede a pošle je klientovi. Připojí do hlavičky text
text/html; charset=windows-1250 , třeba. Klient pak už ví.

Drobné problémy nastávají při ukládání v cache pamětech nebo na offline prohlížení. Serverově upravené stránky totiž podle mé zkušenosti nejsou ukládány.

Fatální problém

Pokud server používá automatické překódování a zároveň uvádíte do hlavičky meta tag content-type, může nastat velký problém, protože meta deklarace bude vlastně dvojí, což prohlížeč zmate. V tom případě nastává rozsypaný čaj. Takže se buďto ujistěte, že na serveru nic takového neběží, nebo meta hlavičku raději nezadávejte. Co mi o tom napsal Jirka Kosek:

"Problém je v tom, že ... SaCzech neumí odstraňovat meta tag poté, co provede překódování. Umí to třeba csacek."

Altavista a spol.

Nevím přesně, jak hledat české texty v zahraničních prohledávačích. Vím ale, že jsou s tím problémy, protože ty stroje nezajímá kódování. Jde pak o to, v jakém kódování bude uživatel zadávat dotaz. (Obecně se dá říci, že zahraniční roboti zobrazují v ISO, čeští roboti častěji ve windows-1250.) Proto doporučuji zadávat meta tagy keywords a description alternativně bez diakritiky. Vyskytne-li se v klíčovém slově š, ž nebo ť, zadejte je třikrát, jednou podle windows, jednou podle ISO a jednou bez háčků. A možná i název stránky (tag title) kvůli vyhledávačům odčeštěte, ale to je sporné.

Unicode

Unicode kódování UTF-8 je další použitelné kódování, zajímavé zejména tím, že obsahuje všechny znaky všech abeced. Jeho čas pravděpodobně teprve přijde, protože zatím není většinou softwaru podporován (prohlížeče jej ale zvládají).

České znaky nahrazuje Unicode dvojicí bajtů (namísto jednoho jako jiná kódování), takže když se na text podíváte na disk nahrubo, uvidíte místo jednoho znaku znaky dva (nějaké klikyháky).

URL encoded

Když se z formuláře předávají data a vyskytne se tam čeština, prohlížeč to překóduje na "URL encoded" tvar. Před každý znak dá procento a pak hexadecimálně zapíše dvěma znaky index českého písmene.

%9A = š, %9E = ž, %E1 = á, %E8 = č, %E9 = é, %EC = ě, %ED = í, %F2 = ň, %F3 = ó, %F8 = ř, %F9 = ů, %FD = ý

Na tohle jsem přišel. Nevím, zda to odpovídá win nebo iso, berte to s rezervou.

URL encoded češtinu zde zmiňuji jenom proto, že na ní náhodou někdy můžete narazit, tak abyste byli alespoň trochu v obraze.

Speciální znaky

Existuje způsob, jak některé české diakritizované znaky zobrazit v prohlížeči bez ohledu na kódování. Vkládají se pomocí &; entit; například "a s čárkou" se píše "&aacute;". Pokud jsem napsal, že to jde jenom pro některé znaky, pak jsem tím myslel znaky s čárkou. Háček se mi tímto způsobem nikdy vykouzlit nepovedlo. Takže je to prakticky nepoužitelné.

Sybolický zápis Co je nad písmenem ? Příklad Zobrazení příkladu
&?tilde; vlnovka  &ntilde; ñ
&?circ; stříška &ecirc;  ê
&?uml; dvě tečky  &auml; ä
&?acute; čárka  &iacute; í
&?grave; opačná čárka &agrave; à
&?ring; kolečko, kroužek &aring; å
&?slash přeškrtnuté písmeno &oslash; ø

Home Site 4 & Sun Office

Vcelku vynikající HTML editory jsou nepoužitelné pro české texty, protože všechny české diakritikované znaky (ve wysiwyg módu) se pokoušejí překódovat na tyto symboly. Neumím to nikde vypnout ani nastavit (ačkoli na to dostávám nefunkční návody). To je v českém textu poněkud nešikovné. (Budu přesnější -- je to na pěst!) Navíc u háčkovaných znaků dělají editory chyby, protože se všechny snaží nahradit entitami. Takže například namísto znaku ř se zadává znak ø (&oslash;). Pavel Satrapa k tomu dodává zajímavý poznatek :

>... Dlužno podotknout, že mnozí WWW klienti ve stejném prostředí dělají tutéž chybu, ovšem zrcadlově obrácenou (tedy &oslash; nezobrazují jako ø, ale jako ř). Negativní důsledky se navzájem vyruší, a uživatel uvidí stránku v původní podobě. To se však týká jen uživatelů se "správně špatnými" klienty, což je hodně slabá náplast.(P. Satrapa: Web design. Neokortex 1997, str 37.)

Těmi klienty, kteří dělají zrcadlovou chybu, myslí Satrapa asi Netscape Navigator 3.

Netscape Composer

Netscapovský Composer dělá tu samou chybu, ale dá se vypnout v nabídce Options - Document Encoding a zde si už vyberete windows-1250 (ISO 8859-2 to neumí :-(
Doporučuji poté dát Set default, ať to nemusíte nastavovat vždycky znova. Pak je dobré dát si do šablony onen "český" meta tag. ,

Opera

Vcelku pěkný a funkční prohlížeč Opera 5.0 má zásadní vadu. Jde o to, že nedokáže přepínat kódování. Ve windows vše zobrazuje pouze ve windows-1250 (to je tím, že pro tento charset jsou udělány windowsácké fonty - nevím, jak je tomu na jiných OS). Navíc i text ve windows-1250 zobrazuje někdy špatně - to když není deklarován font * CE.

Jak nastavit v Opeře kódování, aby to alespoň windows-1250 zobrazovalo česky: file - preferences - dokument - user font and colors. Pro "normal" vybrat (těmi třemi tečkami) font třeba Times, důležitá je spodní nabídka, kde se vybere "středoevropský". Vlastnosti "normalu" se pravděpodobně dědí na veškerý text.

Mozilla 5, doctype a windows-1250

Pokud píšete ve windows 1250 a máte ve zvyku začínat soubor deklarací <!doctype html ...> (to se má), tak se to v Mozille zobrazí nečesky. Je pak potřeba připsat poněkud nestandardní řádek:

<?xml version="1.0" encoding="windows-1250" ?>

Využívám toho, že Mozilla podporuje XML. Dlužno připomenout, že s takto označenými html soubory mohou mít problémy XML parsery. Čili je dobré upravit html dokument do XHTML, aby odpovídal standardu XML.

Překódování

Pokud potřebujete překódovat soubory z jednoho kódování do jiného, výborně vám poslouží program Konvertor, který je volně ke stažení na http://www.walkman.cz/konvertor.html. Díky patří Pavlu Strnadovi.

FrontPage

Funguje to jak v FP Expressu, tak ve FP 2000.

Převedení stránky z windows-1250 do ISO 8859-2: V nabídce Soubor zvolte Vlastnosti stránky (File - Properties). Zvolte v položce Uložení této stránky místo volby středoevropský volbu středoevropský (ISO 8859-2). V položce Zobrazení této stránky ponechte původní volbu.

Sháním názory

Protože jsem tvor windowsácký (nemůžu za to), nemám zkušenosti s jinými platformami. Pište mi, prosím, poznatky o tom, jak se zobrazuje čeština na Unixu, Linuxu a Macích.

Další: Přehled chybných zobrazení češtiny
Vizte též: Kódovací tabulky, Formátovací chyby, Meta tagy, Editory, Rozdíly kódování
Odkaz jinam: Přehled kódování na Češtině.cz, poněkud preciznější, místy tomu nerozumím

Píše Yuhů
dusan@pc-slany.cz
mail formulářem
Jak psát web O tvorbě, údržbě a zlepšování internetových stránek.

Základy HTML CSS FrontPage Hledání

Obsah

Hlavní stránka

Novinky

FAQ

Download

Zdroje

Hledání


Rozšířené

Základní kurs

Jak udělat stránku

Základy HTML

Publikování

Zásady psaní

Editory

Různé prohlížeče

Editory

FrontPage 2000

FP Editor 98

Word 97

FrontPage Express

HTML tipy

Příprava obrázků

Obrázky

Pozadí

Odkazy

Vychytávky odkazů

Záložky

Aktivní mail

Tabulky

Úprava tabulek

Novinky tabulek

Design tabulkami

Rámy

Formátování rámů

Rámy nepoužívat

Iframe

Formuláře

Formuláře v HTML

Dokonalé formuláře

Zápis barev

Definice

Formátovací chyby

Jak udělat levé menu

Vytěžování stránek

Provoz webu

Rychlost stránek

Vzdálené služby

Vyhledávače

Katalogy

Správa souborů

Ikona stránky

Obsah / forma

Čeština

Chyby češtiny

Tabulky kódování

Meta tagy

Nastavení serveru

Programování stránek

Začátky PHP

Možnosti PHP

Používání prohlížeče

CSS styly

CSS styly

Úvod do CSS

Struktura textu

CSS prakticky

PŘEHLED VLASTNOSTÍ CSS

Složitější deklarace

Délkové jednotky

Pozicování

Sloupce pozicováním

Okraje objektů

Odlišení prohlížečů

Omezení CSS

Odlišný tisk

Dynamické HTML

Filtry

Příklady filtrů

Různé barvy odkazů

Barva rolovací lišty

 


Jak psát web: http://dusan.pc-slany.cz/internet/

Píše Yuhů: autorova stránka, mail: dusan@pc-slany.cz

Poslední aktualizace 01.02.2002