Martin Setnička
Michal Šatava
V Praze dne 29. 3. 2009
Následující text by měl především vyložit základní pojmy z oblasti vyjadřování textu v elektronické podobě, pojednat o problémech při čtení a konverzi textových formátů a nastínit cestu, kterou se ubírat při jejich řešení.
Terminologie je dosti nejednoznačná, proto uvádím krom základních pojmenování i ostatní jména v závorce.
Soubor obsahující vlastní text a formátovací značky. Podle zápisu obsahu se jedná o textový nebo binární formát. Formát je popsán příponou a nebo v záhlaví souboru.
Každému znaku (symbolu) je přiřazeno celé nezáporné číslo, podle dané znakové sady (kódová tabulka, kód). Toto číslo je podle kódovacího schématu (charset) zapsáno n celými byty (podle velikosti znakové sady). Nezabývá se vizuální prezentací znaku (glyf)
Např: HTML, XML, PostScript, TeX, CPP, RTF, CSV, SVG, ...
Alespoň část informací je vyjádřena jinak než v textovém formátu.
Např: DOC, ODT, Text602, ...
ASCII je zkratka pro American Standard Code for Information Interchange (americký standardní kód pro výměnu informací).
Jde o první znakovou sadu. Sedm bitů definuje znaky anglické abecedy a jiné znaky používané v informatice. Osmý bit je nulový. Obsahuje tedy 128 znaků (viz Obr. 1).
Obr. 1: Tabulka ASCII kódů [3]
Rozšíření využívající osmého bitu US-ASCII kódu, která obsahují dalších 128 kódů. Jsou bohužel i případy, kdy prvních 128 znaků není totožných s US-ASCII.
Rozšířený kód je přesto malý na to, aby pojmul třeba jen evropské národní abecedy.
Vzniklo tedy mnoho znakových sad s různým významem kódů nad 127 (Viz kapitolu 2.3).
Výhody
Jednoduché kódování (pevná šířka znaku - 8bit).
Malý objem dat.
Nevýhody
Malý rozsah znakové sady.
Existují stovky jednobytových sad (ISO, ČSN, další závislé na platformě, ...).
S rozvojem Internetu je potřeba výměny dokumentů mezi různými platformami a různými národními jazyky. Řešením je vícebytová znaková sada (dále jen Unicode).
Do její přípravy se bohužel najednou pouštějí dvě různé organizace:
Naštěstí obě organizace od roku 1991 spolupracují.
V současnosti jsou číselné hodnoty (code points) jednotlivých znaků identické.
Liší se kódovací schéma.
1991 - 16bitová znaková sada: BMP (Basic Multilingual Plane)
1996 - rozšíření na 32 bitů (používáno 21 bitů, tj. asi milion znaků)
UTF-32: každý znak - 4 byty
UTF-16: každý znak v BMP - 2 byty, ostatní znaky - 4 byty
UTF-8: proměnná délka 1-6 bytů na znak (prakticky 1-4)
Další: UCS-2, UCS-4, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE
Výhody
Znaky US-ASCII se kódují stejně => kompatibilita.
Pro akcentované znaky stačí 2 byty => relativní úspora dat.
Nevýhody
Znaky nemají stejnou délku => není možné skočit o určitý počet znaků.
Pojmenování charsetů se řídí Internet Assigned Numbers Authority (IANA).
V závorce jsou uvedeny alternativní označení.
Různé řídící znaky v různých operačních systémech
(např. konec řádku Unix - LF, Mac - CR, MS - CR+LF).
Různé znakové sady s různým rozsahem a různá kódovací schémata (charset).
U dokumentů uvádět (např. v hlavičce HTML) použitý charset.
Používat software umožňující rozpoznání a konverzi.
Snaha o sjednocení => jednotný národní charset, jednotný světový Unicode.
Vhodné pro okamžité zpracování (formát dat shodný s tvarem v operační paměti).
V případě poškození části dat těžko opravitelné.
Možnost utajení formátu.
Nutnost použití specifického programu.
Složitější interpretace, viry, ...
Jeho specifikace je volně dostupná.
Většinou lépe přenositelný (umí ho číst více programů ve více operačních systémech).
Je prostředkem pro výměnu informací, efektivní využití a zpracování dat.
Např.: ODF, prostý text, ...
Umožňuje získat monopol pro jeho zpracování a zároveň silně omezuje možnosti využití uložených dat. Např. MS Office.
Často se dostaneme do situace, kdy požadujeme data ve specifickém formátu, který se liší od toho, který máme k dispozici. Např. spolupráce programů, z nichž každý pracuje s jiným formátem.
Konverzí formátu se rozumí v ideálním případě jeho změna bez ztráty, nebo nabytí informačního obsahu.
To zdaleka ne vždy platí. Viz kapitolu 5.3.
Pro správnou konverzi je nutné znát formát souboru, který chceme převést.
Pro textový formát je podstatné v jakém je kódování a z jakého operačního systému.
V případě binárního souboru nám napoví přípona. Pokud ji soubor nemá musíme použít speciální program. Nejkrajnější nouzové řešení je pak zkoušení, který program soubor přečte + editace přípony.
Test mnoha programů pro změnu kódování
http://vorisekd.wz.cz/test.htm
Jsou i programy pro konverzi zpřístupněné on-line
http://media-convert.com/, http://www.zamzar.com/
Např. pomocí OpenOffice.org lze pomocí uložit jako konvertovat DOC na ODT a opačně. V textovém editoru PSPad lze editačními nástroji měnit charset i typ zalamování řádků.
Tento postup je však vhodný pro konverzi velkého množství souborů až se současným použitím maker.
Více např na http://www.openoffice.cz/navody/.
U textových formátů se setkáváme s problémem vyjádření znaků, které nemají ve výstupním formátu ekvivalent. Řešením můžou být:
ESC sekvence a HTML kódy:
Jeden nebo několik znaků následujících znak ESC (v HTML &) nejsou interpretovány jako ASCII kódy.
Např. Ä můžeme v HTML zapsat jako Ä.
Transliterace: Např. ť lze aproximovat pomocí t nebo t'.
... užívají pouze základní US-ASCII, takže zde problémy převážně nejsou.
Zde je především obtížná interpretace vstupního souboru a řešením může být snad jen zjednodušení požadavků na výstupní formát, nebo volba kvalitnějšího konverzního nástroje. V případě uzavřených formátů jsou problémy obecně častější a závažnější.
Text tohoto dokumentu je samozřejmě jen úvodem do problematiky. Obsahuje však dost odborných pojmů, které čtenáři pomůžou při studování další literatury.
Věřím, že tento dokument poslouží i k řešení praktických problémů s kódováním a konverzí.