Portál AbcLinuxu, 2. května 2025 07:10
Problém, jak řešit zakódování národně specifických znaků, se ve výpočetní technice řešil již od dřevních dob (přesněji řečeno od okamžiku, kdy chtěl někdo používat něco víc než holé anglickou abecedu). Pro české znaky se v historii používala mnohá kódování, každé mělo nějaké výhody a nevýhody (na legendární kódování bratří Kamenických si ještě leckdo vzpomene, občas ho ještě někdo použije i dnes). Po postupném vystřídání všeho možného jsem zjistil, že je nejvýhodnější používat UTF-8.
Pominu-li zmiňované bratry Kamenické a různé pokusy o národní kódování (říkám pokusy, protože třeba kódování KOI8ČS se neujalo, přestože bylo určeno ČSN jako "jediné správné"), stejně tak jako používání proprietárních kódových stránek, za první skutečně významný krok lze považovat zavedení skupiny kódování podle normy ISO 8859. Znaky české abecedy jsou součástí ISO 8859-2 (což asi každý ví), proto bylo (a stále je) naprosto běžné používat tuto sadu.
Protože přepínání kódových stránek se změnou jazyka je věc dost nepříjemná, objevil se fenomen zvaný Unicode - systém, který umožňuje snadnou práci s libovolným počtem národních abeced současně. Snaha o normalizaci tohoto systému vyústila v normu ISO/IEC 10646, která pokrývá hlavní část tohoto systému (a do budoucna se plánuje pokrytí celého standardu).
Unicode si samozřejmě nevystačí s jedním bajtem pro každý znak. Nejobvykleji se každý znak ukládá dvoubajtově (UCS-2), lze použít i čtyřbajtovou reprezentaci (UCS-4). Tyto reprezentace se hodí hlavně pro vnitřní uložení v paměti, pro ukládání dat a jejich přenos jsou vhodnější tzv. transformační formáty (UTF). Jsou v zásadě tři: UTF-8, UTF-16 a UTF-32 (u dvou posledních se rozlišují ještě varianty podle pořadí bajtů). Formát UTF-8 zakódovává každý Unicode znak jako osmibitové hodnoty, a to tak, že podle potřeby (resp. podle hodnoty) používá 1-4 bajty.
Právě UTF-8 jsem si v poslední době velmi oblíbil, zjistil jsem totiž, že mi přináší téměř samé výhody:
Samozřejmě, že UTF-8 má i své nevýhody. Texty zabírají více místa, ne všechny programy s nimi umí správně pracovat (hlavně ty starší), jsou hůře čitelné v ASCII reprezentaci, pro výměnu dat s jinými lidmi (kteří UTF-8 zatím nepoužívají) je nutná konverze apod. Ale výhody jednoznačně převažují, proto je pro mě UTF-8 dobrou volbou.
Tiskni
Sdílej:
$ echo "Žluťoučký kůň" | recode utf-8..utf-16 | xxd 0000000: feff 017d 006c 0075 0165 006f 0075 010d ...}.l.u.e.o.u.. 0000010: 006b 00fd 0020 006b 016f 0148 000a .k... .k.o.H..
$ ls -lh celkem 7,9M -rw-r--r-- 1 misak users 3,7M čec 12 15:21 blog.iso.txt -rw-r--r-- 1 misak users 4,2M čec 12 15:20 blog.utf8.txt $ gzip blog* $ ls -lh celkem 60K -rw-r--r-- 1 misak users 25K čec 12 15:21 blog.iso.txt.gz -rw-r--r-- 1 misak users 30K čec 12 15:20 blog.utf8.txt.gzVětším problémem mi přijde to, že většina odpovědí googlu na "něco utf-8" už začíná vést na neanglicky psané stránky
LINGUAS="en"; USE="-bidi"; emerge mplayer
.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.