Anglická verze
logolink

< Zpět na seznam lekcí

Kódování textu a znakové sady II

ostatni-sinObsah lekce:

  • ASCII, 8-bitová kódování, Windows-1250, ISO 8859-2, CP852, Kód Kamenických, MacCE
  • Unicode a vícebytové sady
  • Volba znakové sady
  • Textové editory
  • Konverze znakových sad
  • Online nástroje
  • Použití znakových sad na webu

Úvod

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é).

ASCII

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

ascii

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

8-bitová 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).

Nejčastěji používaná kódování českého jazyka (8-bitová kódování)

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
  • ISO 8859-2
  • CP852
  • Kód Kamenických
  • MacCE

Windows-1250

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

ascii
Pozn.: Šedě podbarvené hodnoty jsou nevyužity. NBSP – nezlomitelná mezera.

ISO 8859-2

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

ascii
Pozn.: Šedě podbarvené hodnoty jsou nevyužity. NBSP – nezlomitelná mezera.

CP852

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.

ascii
Pozn.: Šedě podbarvené hodnoty jsou nevyužity. NBSP – nezlomitelná mezera.

Kód Kamenických

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.

ascii
Pozn.: Šedě podbarvené hodnoty jsou nevyužity. NBSP – nezlomitelná mezera.

MacCE

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.

Unicode a vícebytové sady

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.

Volba znakové sady

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

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.

ascii

PSPad

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.

ascii

Další textové editory

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.

ascii

Konverze znakových sad

Software

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.

ascii

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.

ascii

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.

ascii

Online nástroje

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.

ascii

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.

ascii

Použití znakových sad na webu

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í:

  • Použije se výchozí nebo poslední použitá znaková sada.
  • Prohlížeč se pokusí detekovat znakovou sadu automaticky.

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.

ascii

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, …

Další čtení

Odkazy

Otázky

  1. Co je to kódování textu?
  2. Jaká jsou nejčastěji používaná kódování českého jazyka?
  3. Lze jednoduše změnit znakovou sadu?
  4. Jaké nástroje ke změně kódování textu znáte?
  5. Předveďte, jak lze změnit kódování textu on-line aplikací.
  6. Předveďte, jak lze změnit kódování textu v internetovém prohlížeči.
webdesign, xhtml, css, php - Mgr. Michal Mikláš