Ach ta ΦeÜtina

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φ.

╪eÜenφ pomocφ znakov²ch entit

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&#x0159;&#x00ed;li&#x0161;
      &#x017e;lu&#x0165;ou&#x010d;k&#x00fd; k&#x016f;&#x0148;
      &#x00fa;p&#x011b;l &#x010f;&#x00e1;belsk&#x00e9; &#x00f3;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 û `&lt;', resp. `&amp;'.

Pohodln∞jÜφ zp∙sob bez zßruky

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>
⌐ Ji°φ Kosek 2000-2001