Kódování znakůKódování znaků nebo znakový kód (anglicky character encoding, character code) je ve výpočetní technice kód, který každému znaku přiřazuje určité číslo (bajt, sekvenci elektrických pulzů ap.). Znaková sada označuje množinu všech znaků zvoleného kódování, které jsou uspořádány podle kódových bodů, tedy pozic v tabulce znaků seřazených podle kódů. Znakem se rozumí písmena různých abeced, číslice, symboly a jiné grafémy, ale také nezobrazované řídící znaky, které mají zvláštní funkce. Znaková sada je obdobou Morseovy abecedy, která kóduje písmena latinky (a další znaky) pomocí sérií dlouhých a krátkých stisků telegrafního klíče. Součástí prakticky všech v současnosti používaných kódování je 7bitový kód ASCII, který obsahuje písmena latinky bez diakritiky, číslice, základní symboly a pomocné formátovací znaky. Současná kódování znaků vychází ze světového standardu Unicode, případně z čínského standardu GB18030, které mají shodný znakový repertoár. Tento znakový repertoár pokrývá prakticky všechny znaky používané dnes lidstvem. Proces standardizacePo přijetí de facto standardů dálnopisných kódů bylo významným krokem standardizace vytvoření znakových kódů ASCII (1963) a EBCDIC (1964). Kód ASCII reprezentuje 33 řídicích a 95 tisknutelných znaků včetně malých a velkých písmen anglické abecedy, číslic a dalších symbolů pomocí 7bitových čísel; kód EBCDIC reprezentuje poněkud širší sadu znaků pomocí 8bitových čísel. Zatímco kód EBCDIC zůstal omezen na sálové počítače firmy IBM a jejich kopie, kód ASCII byl převzat různými národními i mezinárodními standardizačními organizacemi, například jako ISO/IEC 646 nebo T.50, a na jeho základě vzniklo množství národních variant používajících 7bitové kódy. Jejich velkou nevýhodou bylo, že symboly, jejichž používání se mezitím rozšířilo, nahrazují národními znaky, takže při volbě nevhodného kódování se např. texty programů mohou proměnit v nečitelnou změť znaků. Většího rozšíření se proto dočkaly 8bitové kódy, které zpravidla ponechávají kódy ASCII beze změn. Jedním 8bitovým kódem však nelze reprezentovat latinku, řecké písmo, cyrilici (azbuku), arabštinu a hebrejštinu, ani pokrýt všechny znaky latinky s diakritickými znaménky používanými v různých jazycích. Významné firmy jako Microsoft, IBM a Apple navíc vyvinuly vlastní osmibitové kódy, které přivedly kódování národních znaků na pokraj chaosu. Nejednotnost osmibitových kódování spolu s potřebou jednotné reprezentace asijských písem včetně rodiny CJK vedly okolo roku 1990 k vytvoření standardů Unicode a ISO 10646 vyvíjených ve vzájemné součinnosti, jejichž postupně uskutečňovaným záměrem je vytvořit jednotné kódovaní pro reprezentaci všech písem používaných na planetě Zemi. TerminologieZatímco znaková sada je prostý souhrn znaků, kódování znaků definuje navíc i přiřazení kódů jednotlivým znakům. Kódem může být například Morseova abeceda, kódující písmena latinky, číslice a několik dalších znaků pomocí sérií dlouhých a krátkých stisků telegrafního klíče, nebo kombinace dírek na děrném štítku nebo děrné pásce; ve výpočetní technice se však znaky nejčastěji reprezentují celými čísly, která se například ve standardu Unicode nazývají kódový bod (anglicky code point). Pro kódování znaků se někdy používá termín kódovaná znaková sada (anglicky coded character set), ale v praxi se oba termíny často používají jako synonyma. Protože znaková sada obvykle zahrnuje jak tisknutelné tak netisknutelné znaky, není starší termín pro kódování znaků abecedně-číslicový kód příliš vhodný. ČSN pro znakovou sadu používá termín soubor znaků, který však obsahuje slovo soubor používané jinde ve výpočetní technice ve významu sada dat umístěných na datovém médiu. V mnoha operačních systémech se pro kódování znaků používá termín kódová stránka (anglicky code page, codepage případně codeset), v některých prostředích termín abeceda (anglicky alphabet). Jednoduché znakové sadyKonvenční znakové sady a kódování znaků byly shodné, stejný standard specifikoval, které znaky byly dostupné a současně jak mají být zakódovány v sekvencích kódových jednotek (obvykle jeden znak na kódovou jednotku). Z historických důvodů MIME a jiné systémy založené na těchto sadách používaly termín znaková sada i pro systémy pro kompletní kódování sekvencí znaků do sekvence bytů (oktetů). Moderní přístup ke kódováníUnicode a jeho paralelní standard ISO 10646, tuto ideu překonávají oddělením dostupných znaků a jejich číslování od toho, jakým způsobem jsou tyto znaky kódovány jako série „kódových jednotek“ (čísel omezené velikosti) a jakým způsobem jsou tyto jednotky kódovány do sekvence bytů (oktetů). Cílem této dekompozice je ustavit univerzální znakovou sadu, která může být kódována množstvím způsobů. Proto byly zavedeny následující pojmy:
Lexikální řazeníSouvisející informace naleznete také v článku Abecední řazení.
Součástí standardů pro kódování znaků je obvykle i informace, jakým způsobem se v konkrétním jazyce provádí lexikální (abecední, alfabetní, …) řazení. Řazení nelze většinou provést jen prostým porovnáním kódových hodnot znaků (tzv. ordinální řazení), protože většina jazyků má různé výjimky (např. české Ch). Ne vždy lze realizovat lexikální řazení přidaných znaků do znakové sady. Znakové sady a HTMLAby nemusel uživatel u každé stránky hledat v menu znakovou sadu vhodnou pro její zobrazení, je možné v HTML hlavičce uvést znakovou sadu, ve které byla daná stránka vytvořena.
Všechny dnes běžně rozšířené prohlížeče (Windows Internet Explorer, Firefox, Opera) tento tag implementují, jeho interpretace však závisí také na nastavení webového serveru. Stránka zobrazená z lokálního disku správně může při stažení ze serveru vypadat jako „rozsypaný čaj“ – dokud uživatel nevnutí prohlížeči ručně správné kódování nebo neupraví nastavení webserveru, který posílá prohlížeči chybnou informaci o kódování v hlavičce HTTP. Poměrně univerzálně fungující možností je vkládání znaků pomocí escape sekvencí. Sekvence &#n; zobrazí znak s unikódovou hodnotou n. Například sekvence á zobrazí český znak á. V tomto případě byla hodnota znaku uvedena decimálně, pokud bychom ji chtěli uvést hexadecimálně, použijeme sekvenci &#xn; (např. á pro znak á). ASCIIASCII je nepochybně základním kódováním, z kterého vychází v euro-americkém prostoru ostatní standardy. Drtivá většina osmibitových znakových sad pouze rozšiřuje ASCII tím, že přidávají významy kódům 128-255, které se v ASCII nepoužívají. Kódování češtiny Podrobnější informace naleznete v článku Kódování češtiny.
Standardy ISO 8859-xStandardy ISO/IEC 8859-x definují osmibitové znakové sady, používané zvláště v UNIXu/Linuxu. Novější unixové distribuce již přecházejí na Unicode s kódováním UTF-8.
Vybrané kódové stránky WindowsOperační systémy rodiny Microsoft Windows používají několik osmibitových kódování, více nebo méně podobných standardům ISO8859-x. Kromě toho interně používají pro definici fontů šestnáctibitovou znakovou sadu WGL-4 (windows glyph 4), která obsahuje všechny znaky ze zde zmiňovaných kódových stránek Windows-1250 až Windows-1258.
Vícebytové standardy
Znakové sady pro DOSTyto znakové sady jsou osmibitovým kompatibilním rozšířením ASCII (definují navíc význam kódů 128 až 255).
Jiné standardy
Související článkyExterní odkazy
|