Obsah lekce:
Pokud v oblasti informačních technologií pracujeme s textem, tak jednotlivé znaky tohoto textu jsou zpracovávány jako číselné hodnoty. Kódování textu přiřazuje k znakům tyto číselné hodnoty prostřednictvím tzv. znakových sad. Ty se však mohou v jednotlivých jazycích lišit.
Většina znakových sad znakům přiřazuje 8-bitové číslo (nemusí to však být pravidlem a jak je také uvedeno dále, existují i výjimky, například 16-bitové).
Nejstarší standardizovanou znakovou sadou je kód ASCII, jehož vznik se datuje do roku 1963. Název ASCII je zkratkou z „American Standard Code for Information Interchange“, nebo česky „Americký standardní kód pro výměnu informací“.
Kód ASCII je sedmibitový, což znamená, že každému znaku je přiřazeno sedmibitové číslo, tj. číslo z intervalu 0-127. Tento kód tedy definuje 128 znaků.
Hlavní nevýhodou ASCII kódu je fakt, že tento kód definuje pouze znaky anglické abecedy – 128 hodnot totiž nedokáže obsáhnout znaky všech národních abeced, které je možno používat v různých jazycích. Z tohoto důvodu byl kód ASCII rozšířen na 8-bitový kód, ve kterém prvních 128 hodnot obsahuje původní ASCII kód a dalších 128 hodnot je možné využít pro znaky specifické pro daný jazyk (většinou tedy znaky s diakritikou). Tato část ASCII kódu není stejná ve všech jazycích, liší se dle použitého kódování.
Jak už bylo zmíněno v předchozí kapitole, ASCII kód je 7-bitová znaková sada, která umožňuje uložit maximálně 128 znaků, nemá tedy dostatečnou kapacitu pro uložení všech znaků národních abeced. Z tohoto důvodu byla tato znaková sada časem rozšířena na 8-bitovou, která již umožňuje uložit až 256 různých znaků. Prvních 128 znaků je většinou shodných s původní tabulkou ASCII a další znaky obsahují znaky národní abecedy. Tyto znaky se většinou v různých znakových sadách liší.
8-bitové znakové sady se někdy také označují společným označením ANSI (např. v operačních systémech MS Windows).
V oblasti 8-bitových kódů se pro kódování češtiny nabízí několik alternativ. Jsou to zejména tyto znakové sady:
Windows-1250 je výchozí znakovou sadou pro kódování češtiny v systému MS Windows. Toto kódování lze používat nejen pro češtinu, ale i pro další středoevropské jazyky (albánština, chorvatština, polština, slovenština a další) a pro němčinu, protože znaky typické pro němčinu jsou na shodných pozicích jako v kódování Windows-1252 (kódování pro západoevropské jazyky).
Pozn.: Šedě podbarvené hodnoty jsou nevyužity. NBSP – nezlomitelná mezera.
ISO 8859-2 je další možností kódování znaků v češtině. Toto kódování je definováno jako ISO standard a jeho plné označení zní ISO/IEC 8859-2. Někdy se však u této znakové sady můžeme setkat i s označením Latin-2. Toto označení se však někdy používá i pro kódování CP852 z operačního systému MS-DOS, pro vhodnější rozlišení těchto dvou kódování je vhodnější používat označení ISO Latin-2 pro ISO 8859-2 a PC Latin-2 (nebo IBM Latin-2) pro starší CP852.
Znaková sada ISO 8859-2 se často používá v unixových operačních systémech, např. GNU/Linux.
Pokud porovnáme znakové sadu Windows-1250 a ISO 8859-2 zjistíme, že tyto znakové sady jsou velmi podobné. Tyto sady se liší pouze v umístění některých znaků.
Pozn.: Šedě podbarvené hodnoty jsou nevyužity. NBSP – nezlomitelná mezera.
Znaková sada CP852 (jak už bylo uvedeno u sady ISO 8859-2, je tato znaková sada někdy označována jako PC Latin-2 nebo IBM Latin-2) je znaková sada pro středoevropské jazyky a obvykle se používala v operačním systému MS DOS.
Pozn.: Šedě podbarvené hodnoty jsou nevyužity. NBSP – nezlomitelná mezera.
Další ze znakových sad, které bylo možné v operačním systému MS DOS využívat pro kódování češtiny a slovenštiny. Tento kód je pojmenován podle jeho autorů – Jiřího a Mariana Kamenických. Tato znaková sada vychází ze sady CP437 pro kódování znaků anglické abecedy v operačním systému MS DOS.
První polovinu této sady je shodná s kódem ASCII, ve druhé polovině lze nalézt znaky české a slovenské abecedy.
Pozn.: Šedě podbarvené hodnoty jsou nevyužity. NBSP – nezlomitelná mezera.
Posledním ze zmiňovaných znakových sad pro kódování češtiny je znaková sada MacCE (neboli Mac Central European). Ten se používá jako kódování pro středoevropské jazyky na počítačích společnosti APPLE v operačních systémech MacOS.
Kromě výše uvedených znakových sad, které jsou 8-bitové - 1 bytové, lze využívat i vícebitové znakové sady. Ty většinou definují znaky, které jsou definovány ve znakové sadě Unicode. Tato znaková sada by měla obsahovat všechny znaky z používaných abeced různých jazyků.
Vývoj této znakové sady započal v roce 1987 a následně v roce 1991 bylo založeno Unicode Consorcium (http://unicode.org/), které tuto znakovou sadu spravuje. Tato sada v aktuální verzi obsahuje více než 100 000 znaků, avšak poskytuje prostor až pro 1 114 112 znaků s indexy (0)16 až (10FFFF)16. Kompletní tabulka všech těchto znaků je dostupná na webu Unicode Consorcia (http://unicode.org/charts/).
Znaková sada Unicode je v operačních systémech implementována prostřednictvím kódů UTF-8, UTF-16 a UTF-32, které pro uložení znaku využívají minimálně 8 (v případě UTF-8), 16 (v případě UTF-16) nebo 32 bitů (v případě UTF-32) – je to však velikost minimální, některé znaky mohou být kódovány i vyšším počtem bitů.
Výhodou těchto způsobů kódování je fakt, že tyto znakové sady obsahují znaky z většiny jazyků, není tedy nutné vybírat znakovou sadu dle použitého jazyka. Nevýhodou je vyšší velikost souboru a vyšší náročnost pro zakódování souboru.
V nejjednodušších textových editorech (jako je například Poznámkový blok v operačním systému MS Windows) máme pouze nejzákladnější možnosti nastavení kódování. Pokročilejší možnosti nám nabízí až pokročilejší nástroje, jako je například editor PSPad.
Poznámkový blok nabízí pouze základní možnosti nastavení znakové sady. Máme na výběr z ANSI, několika sad Unicode a UTF-8. V případě volby UTF-8 je volba znakové sady jasná. Složitější to však bude u znakové sady ANSI. V tomto případě zvolená znaková sada závisí na jazykovém nastavení operačního systému. Například v případě nastavení českého jazyka bude použita znaková sada Windows-1250.
O něco pokročilejší nastavení znakové sady nabízejí pokročilejší editory, mezi které můžeme zařadit například populární PSPad (http://www.pspad.com/cz/). Tento textový editor lze používat (kromě psaní běžného neformátovaného textu) i pro editaci zdrojových kódů v různých programovacích jazycích nebo vytváření HTML stránek.
Výhodou použití tohoto editoru je fakt, že narozdíl od Poznámkového bloku umožňuje ukládat dokumenty i ve znakové sadě ISO 8859-2 a dalších sadách.
Kromě populárního PSPadu existuje i mnoho dalších textových editorů, které umožňují nastavit kódování textu. Za zmínku stojí například Notepad2 (http://notepad-plus.sourceforge.net/uk/site.htm) nebo Notepad++ (http://notepad-plus.sourceforge.net/uk/site.htm), který je na níže uvedeném obrázku.
Pokud potřebujeme provést konverzi souboru do jiného kódování, můžeme použít některou z řady aplikací, které jsou většinou dostupné zdarma ke stažení na internetu. Příkladem takové aplikace může být například aplikace „Konverze češtiny“ (http://www.pokluda.com/FreewareCz.aspx). Ovládání této aplikace je velmi jednoduché. Pouze vybereme zdrojový a cílový soubor (popřípadě můžeme načíst data ze schránky nebo do schránky výsledné data uložit) a nastavíme kódování zdrojového a cílového souboru a klikneme na tlačítko „Proveď konverzi“. Tato aplikace podporuje většinu českých znakových sad (Windows-1250, Kód kamenických, CP852, ISO 8859-2 a další). Nevýhodou je, že nepodporuje Unicode kódování, tj. znakové sady UTF-8 nebo UTF-16.
Další možností, která již je z kategorie shareware, je program Prekodér (http://zmsoft.cz/prekoder/index.html). Tento program lze zdarma měsíc používat a na rozdíl od předchozího programu nabízí i možnost převodu kódování UTF-8.
Výše uvedení nástroje jsou zaměřeny na české znakové sady. Někdy je však potřeba převést dokument do jiné znakové sady. Pro takový převod je možno použít například aplikaci Character Set Converter (http://www.kalytta.com/tools.php), která nabízí velký výběr různých znakových sad, avšak opět se jedná pouze o shareware.
Kromě řady aplikací, které slouží pro převod diakritiky a z nichž některé byly popsány v předchozí kapitole, lze využít i online nástroje pro převod textu do jiných znakových sad. Příkladem takovéto online aplikace může být například aplikace na webu motobit.com (http://www.motobit.com/util/charset-codepage-conversion.asp), která umožňuje uložení vloženého textu do různých znakových sad a jeho následné uložení do souboru.
Z mnoha dalších konvertorů lze zmínit například ještě web http://kanjidict.stc.cx/recode.php, který na rozdíl od předchozího příkladu nabízí pouze základní možnosti konverze.
Problematiku znakových sad je nutné řešit i v oblasti tvorby WWW stránek. Dokument, který vytváříme, ukládáme v některé z výše popsaných znakových sad.
Kromě uložení dokumentu ve vhodné znakové sadě, je nutné informaci o této znakové sadě předat i internetovému prohlížeči. Pokud tak neučiníme, přichází v úvahu jedna ze dvou možností:
V prvním případě zde je riziko, že je dokument vytvořen v jiné znakové sadě, než je nastavena. V tom druhém může v některých případech dojít k chybné detekci a výsledkem může být nečitelný, tak jak zobrazuje níže uvedený obrázek.
Pro zajištění správné detekce je tedy nutné použít následující META tag:
<meta http-equiv="content-type" content="text/html;charset=znakova_sada" />
Za text znakova_sada dosadíme vybranou znakovou sadu. Pro kódování češtiny to může být například jedno z následujících jmen: iso-8859-2, windows-1250, UTF-8, …