Všechny dosavadní ukázky WML kódu obsahovaly český text bez diakritiky. Mohli jste proto nabýt neoprávněného dojmu, že wapové stránky nelze psát s českými znaky. Češtinu samozřejmě použít lze, ale není to tak jednoduché, jak by se mohlo zdát.
Jazyk WML vychází z XML. To jako znakovou sadu používá ISO 10646. V praxi mohou XML dokumenty obsahovat libovolný znak z libovolného jazyka používaného dnes na Zemi. V jednom dokumentu tak můžeme používat angličtinu, češtinu, ruštinu a třeba i arabštinu s korejštinou. Pro zápis znaků je potřeba použít nějaké kódování, které říká jakému znaku odpovídají jednotlivé bajty nebo sekvence bajtů uložených v souboru s XML dokumentem.
XML jako primární kódování používá kódování UTF-8. Na něm je zajímavé to, že znaky z ASCII mají stejný kód i v UTF-8. Znaky národních abeced se ukládají do proměnlivého počtu bajtů. Například znaky s českou diakritikou se ukládají do dvou bajtů. Pro editování souborů s kódováním UTF-8 proto potřebujeme speciální editor.
Specifikace jazyka WML jako kódování rovněž preferuje UTF-8. Vše se tedy zdá jednoduché, uložíme stránky s češtinou v kódování UTF-8 a bude vyhráno. Bohužel, ze zcela nepochopitelných důvodů dnešní brány mobilních operátorů a mobilní telefony kódování UTF-8 nepodporují. Při pokusu o načtení takové stránky dostaneme jen chybové hlášení.
První možností, jak na stránkách bez problému zobrazovat znaky s diakritikou, jsou znakové entity. Ve WML stránce můžeme použít zápis &#xkód;, kde kód je kód znaku, který chceme do stránky vložit. Kódy znaků lze zjistit např. na těchto adresách http://www.unicode.org/charts/PDF/U0080.pdf a http://www.unicode.org/charts/PDF/U0100.pdf. Stránku s větou „Příliš žluťoučký kůň úpěl ďábelské ódy.“ pak můžeme zapsat takto:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card title="CS pomoci entit"> <p align="left">Příliš žluťoučký kůň úpěl ďábelské ódy. </p> </card> </wml>
Vytvářet takovýmto způsobem stránky je samozřejmě dost nepohodlné. Konverzi na znakové entity za nás naštěstí může udělat program. Jeden takový jsem pro vás připravil a můžete si ho stáhnout z adresy http://www.kosek.cz/sw/convert/.
Viděli jsme, že znaky `<' a `&' mají ve WML speciální význam. První z nich uvozuje tagy WML a druhý znakové entity. Pokud chceme tyto znaky zapsat jako součást dokumentu, musíme použít jejich speciální opis – `<', resp. `&'.
Specifikace WML říká, že klienti mohou podporovat i další kódování než je UTF-8. Nabízí se tedy použití kódování ISO-8859-2, které se používá především na unixových systémech, ale podporují ho i některé aplikace pro Windows. Všechny telefony, které jsem měl v ruce, toto kódování zvládly. O konverzi kódování se však z principu stará brána operátora. Oba dva čeští operátoři si poradí i s kódováním obvyklým ve Windows (windows-1250).
Osobně vám tedy doporučuji stránky vytvářet v kódování ISO-8859-2. Tento způsob je funkční a vyhovuje standardům WML. Použití windows-1250 je také možné, ale WAP fórum nijak oficiálně toto kódování nepodporuje.
Jediná změna, která nás na stránkách čeká při použití těchto kódování, je správné uvedení kódu v deklaraci na začátku WML stránky:
<?xml version="1.0" encoding="iso-8859-2"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card title="CS v iso-8859-2"> <p align="left">Příliš žluťoučký kůň úpěl ďábelské ódy.</p> </card> </wml>