Co je Unicode: Kompletní průvodce, použití a kódování

Poslední aktualizace: 20 srpna 2025
  • Unicode přiřazuje každému znaku jedinečný kódový bod a synchronizuje jeho repertoár s normou ISO/IEC 10646.
  • UTF-8, UTF-16 a UTF-32 kódují stejné znaky a umožňují bezztrátovou konverzi.
  • Normalizace, Bidi a vlastnosti UCD zajišťují konzistentní porovnávání, řazení a vykreslování.
  • Použití kódování Unicode (nejlépe UTF-8 na webu) zabraňuje poškození a usnadňuje internacionalizaci.

Obecná ilustrace o Unicode

Unicode je běžný jazyk, kterým počítače mluví při práci s textem : každému znaku a symbolu z téměř jakéhokoli systému psaní přiřazuje jedinečné číslo, takže jej lze bezproblémově ukládat, zpracovávat a sdílet mezi platformami a zeměmi.

Tento standard vznikl s cílem překonat omezení starých znakových sad ( sada ASCII , kódové stránky, EBCDIC atd.), které nedostatečně splňovaly požadavky nebo byly vzájemně nekompatibilní, a dnes je synchronizován s normou ISO/IEC 10646, udržuje algoritmy (například obousměrný) a definuje vlastnosti a normalizační pravidla, aby vše fungovalo konzistentně.

Co je Unicode a proč je tak důležitý?

Unicode je univerzální a neustále se vyvíjející standard kódování znaků , který popisuje každý znak názvem, kódovým bodem a sadou vlastností (písmo, kategorie, směr, velká a malá písmena atd.). Technický výbor Unicode (UTC) v rámci konsorcia Unicode udržuje jeho synchronizaci s normou ISO/IEC 10646.

Jeho cílem je univerzalita, jednotnost a jedinečnost : široký repertoár, který umožňuje jednoznačnou výměnu vícejazyčného textu s jasnými a reprodukovatelnými pravidly. Díky tomu mohou moderní technologie (operační systémy, prohlížeče, XML, Java, databáze) v rámci jednoho dokumentu kombinovat latinské a arabské písmo, ideogramy CJK, emoji a technické nebo hudební symboly.

Znaky, glyfy a kódové body

V kódu Unicode je znak abstraktní jednotkou informace a kódový bod je její číselný identifikátor . Glyf je vizuální forma (to, co vidíte na obrazovce), která závisí na písmu . Jeden znak může mít více glyfů a někdy jeden glyf představuje více než jeden znak.

Obvyklý zápis kódového bodu je U+XXXX v hexadecimální soustavě . Ilustrativní příklady z analyzovaného materiálu: malé písmeno 'l' je U+006C, předpřipravené malé písmeno 'ü' je U+00FC, 'é' je U+00E9 a řecká beta: velké písmeno je U+0392 a malé U+03B2 (v některých textech je 'β' uváděno s U+0392, ale tento kód odpovídá velkému písmenu 'Β').

Kódový prostor Unicode má 1 114 112 možných pozic (až do U+10FFFF) , uspořádaných tak, aby pokrývaly a klasifikovaly všechny systémy psaní a symboly, s desítkami tisíc efektivních a rostoucích přiřazení v každé verzi.

Plány, oblasti a bloky

Unicode rozděluje svůj znakový prostor do 17 rovin, z nichž každá má až 65 536 kódových bodů . Tato organizace usnadňuje seskupování souvisejících skriptů a symbolů a rychlé nalezení toho, co hledáte.

Nejrelevantnější roviny : základní vícejazyčná rovina (BMP, rovina 0) sdružuje téměř všechny moderní abecedy a mnoho symbolů; doplňková vícejazyčná rovina (SMP, rovina 1) uchovává historická písma a technické symboly (např. hudební a matematické); doplňková ideografická rovina (SIP, rovina 2) rozšiřuje ideogramy čínsko-japonského jazyka (CJK); rovina 14 (SSP) obsahuje speciální označení; a roviny 15 a 16 jsou určeny pro soukromé použití.

Bloky a oblasti : mapy jsou neformálně rozděleny na oblasti a formálně na souvislé bloky. Bloky se používají k tabelaci a dokumentaci znaků, i když ne vždy odpovídají smysluplným jazykovým seskupením.

  Mistr v environmentálním managementu: programy a požadavky

Ideogramy CJK a projekt Unihan

Východoasijské (hanské) ideogramy jsou v kódu Unicode sjednoceny se stylistickými variacemi podle regionu , ale všechny odkazují na stejný abstraktní znak. Jejich správu zajišťuje Ideographic Reporter Group (IRG), skupina ISO/IEC JTC1/SC2/WG2 se zastoupením Číny, Japonska, Koreje, Vietnamu, Hongkongu, Macaa, Singapuru, USA a dalších zemí.

Databáze Unihan shromažďuje pomocné informace (výklady, významy, ekvivalence) nezbytné pro práci s těmito ideogramy v různých jazycích a historických nebo firemních standardech.

Hlavní bloky a rozšíření CJK :

  • Sjednocené ideografie CJK (BMP, U+4E00–U+9FFF)20.992 XNUMX běžně používaných znaků.
  • Rozšíření A (BMP, U+3400–U+4DBF): 6.592 XNUMX méně častých ideogramů.
  • Rozšíření B–H: v SMP/SIP/TIP se sčítají až o desítky tisíc více (B: U+20000–U+2A6DF, 42.720 2; C: U+700A2–U+73B4.154F, 2 740; D: U+2B81–U+222B2F, 820; E: U+2B5.762–U+2CEAF, 0 2; F: U+7.473CEB30000–U+3134EBEF, 4.939 31350; G: U+323–U+4.192F, XNUMX XNUMX;
  • Další související bloky CJKKangxi radikály (U+2F00–U+2FDF), symboly a interpunkce CJK (U+3000–U+303F), kompatibilita a formáty kompatibility, doplněk ideogramů kompatibility atd.

Unicode předpokládá, že začlenění ideogramů nebude mít absolutní konec, a zvažuje mechanismy, jako jsou sekvence ideografického popisu, které reprezentují nekódované symboly jejich rozdělením na existující komponenty (s upozorněním: bez kanonického rozkladu nebo záruk v operacích, jako je vyhledávání nebo řazení).

Kódování: UTF-8, UTF-16 a UTF-32

Unicode definuje transformační formy (UTF), které převádějí kódové body na paměťové jednotky , aby software mohl efektivně zpracovávat text podle jeho kontextu.

UTF-8 je kódovací formát s proměnnou délkou, orientovaný na bajty, který je kompatibilní s ASCII v rozsahu U+0000–U+007F v jednom bajtu. Současný standard používá 1 až 4 bajty na znak; některé starší texty zmiňují 1–6, ale v moderním Unicode je to 1–4. Je to dominantní formát na webu.

UTF-16 používá 16bitové jednotky

(jedna nebo dvě kódové jednotky na znak) : většina znaků BMP se vejde do jedné jednotky; doplňkové znaky používají náhradní páry v rozsahu U+D800–U+DFFF.

UTF-32 má pevnou délku: 4 bajty na znak, je to jednoduché, ale náročné na prostor; užitečné, když je důležité přímé indexování znaků a paměť není problém.

Jak jsou bity distribuovány v UTF-8

Formát UTF-8 distribuuje bity kódových bodů do sekvencí o délce 1 až 4 bajtů s rozpoznatelnými záhlavími, což zabraňuje nejednoznačnostem a usnadňuje detekci hranic znaků.

Rozsah Unicode Bitový vzor Bytů
U+0000..U+007F 0xxxxxx 1
U+0080..U+07FF 110rrrrr 10xxxxxx 2
U+0800..U+FFFF 1110zzzz 10yyyyyy 10xxxxxx 3
U+010000..U+10FFFF 11110uuu 10uuuzzz 10yyyyyy 10xxxxxx 4

Klíčovou výhodou UTF-8 je, že se vyhýbá problémům s pořadím bajtů (endianness) a umožňuje vysoce efektivní zpracování textových proudů, kromě toho je zpětně kompatibilní s ASCII.

Kódovací schémata, endianismus a BOM

Kromě UTF formulářů popisuje Unicode serializační schémata , která řeší, jak se bajty přenášejí mezi systémy s různou endianností a jak se signalizují aspekty, jako je pořadí bajtů.

  • UTF-8: endianismus se neuplatňuje. Lze jej přenést Značka pořadí bajtů (kusovník) jako vodítko, ačkoli to ve výchozím nastavení není vyžadováno ani doporučeno.
  • UTF-16Varianty BE/LE (big/little-endian) a volitelný BOM (pokud chybí a není definován protokolem, předpokládá se big-endian).
  • UTF-32Varianty BE/LE s analogickými pravidly; kusovník povolen jako objednací značka.
  K čemu se používá vláknová optika?

Existují také specifické varianty , jako například UTF-16BE/UTF-16LE a UTF-32BE/UTF-32LE (bez konvence BOM), a další historicky kompatibilní kódování, jako například UTF-7 nebo UTF-EBCDIC, kromě GB18030 (čínský ekvivalent UTF-8 s podporou zjednodušené a tradiční čínštiny).

Normalizace, složení a ekvivalence

Mnoho znaků lze reprezentovat jako předem složené nebo jako sekvence základu + spojovacích znaků . Klasické příklady z přepracovaného materiálu: předem složené 'Ä' je U+00C4, zatímco rozložené tvar je 'A' (U+0041) + diaereze (U+0308). Vietnamské 'ỗ' lze reprezentovat jako 'o' (U+006F) + circumflex (U+0302) + tilda (U+0303).

Unicode definuje standardizované tvary a dva typy ekvivalence : kanonický (stejný základní obsah) a kompatibilitu (tvary, které se mohou jevit stejně, ale mají sémantické rozdíly). Standardizace zajišťuje spolehlivé porovnávání řetězců a snižuje duplicitu.

Obousměrný algoritmus a speciální znaky

Pro písma psaná zprava doleva, jako je arabština nebo hebrejština, obsahuje Unicode standardizovaný a vyvíjející se obousměrný algoritmus (Bidi) (např. revize v 6.3), takže smíšené texty s latinkou a arabštinou jsou zobrazeny ve správném vizuálním pořadí.

Třídy kódových bodů, které by měly být známy podle přijatého materiálu: grafické znaky (písmena, znaky, symboly), formátování (neviditelné znaky, které ovlivňují zpracování: U+2028 zalomení řádku, U+2029 zalomení odstavce, U+00A0 mezera), zděděné řídicí kódy pro kompatibilitu (rozsahy U+0000–U+001F, U+007F, U+0080–U+009F), soukromé použití, rezervované pozice, náhrady (U+D800–U+DFFF pro UTF-16) a ne-znaky (U+FFFE, U+FFFF v každé rovině).

Unicode, ISO/IEC 10646 a další standardy (ASCII, ANSI, kódové stránky)

Unicode je synchronizováno s normou ISO/IEC 10646 (UCS) a zachovává mapování na předchozí standardy (ASCII, ISO 8859-1, ANSI Z39.64, JIS X 0208, KS X 1001, GB 2312, GB 18030, HKSCS, CNS 11643 atd.), kromě rezervace mezer pro soukromé použití výrobci.

ASCII vs. Unicode : ASCII je 7bitová znaková sada se 128 znaky , dostatečná pro základní angličtinu, ale nedostatečná pro jazyky s diakritikou, ideogramy nebo emoji . Unicode pokrývá více než 140 000 znaků a stále se rozrůstá s 8/16/32bitovým kódováním podle formátu UTF-12.

ANSI a kódové stránky : „ANSI“ obvykle označuje omezené a vzájemně nekompatibilní 8bitové kódové stránky systému Windows. Počítač s kódem OEM-Latin II, který otevře text v kódu IBM EBCDIC-Cyrillic, uvidí nesprávné znaky. Unicode tento problém řeší jedinou znakovou sadou a bezztrátovými konverzemi mezi svými vlastními tvary.

Implementace na systémech (Windows, Solaris) a konverze

Systém Windows interně používá pro svá moderní API kódování UTF-16 a nabízí funkce jako MultiByteToWideChar a WideCharToMultiByte pro převod mezi kódováním Unicode a kódovými stránkami (SBCS/DBCS/MBCS). Pokud jste nuceni převést na kódovou stránku, může dojít ke ztrátě dat, pokud nedokáže reprezentovat všechny znaky.

Nové aplikace ve Windows by měly interně používat UTF-16 a převod ponechat na okrajích (I/O, protokoly), aby se minimalizovalo poškození. I přesto si Windows zachovává kompatibilitu s kódovými stránkami, pokud je to nevyhnutelné.

Oracle Solaris 11 podle revidované dokumentace podporuje na systémové úrovni Unicode 6.0 a ISO/IEC 10646:2011, přičemž ve svých sadách parametrů používá jako výchozí formát UTF-8, což šetří problémy s řazením bajtů a transparentně zachovává ASCII.

Unicode v praxi: Web, dokumenty a programování

Na webu je běžné zobrazovat a ukládat obsah v kódování UTF-8 . V HTML deklarujte '<meta charset="UTF-8">', abyste zajistili kompatibilitu, a v případě potřeby použijte hexadecimální číselné entity (příklad: euro '&#x20AC;').

  Spolehlivé zdroje informací v digitálním věku

Ve Wordu můžete snadno vkládat symboly Unicode umístěním kurzoru, výběrem nabídky Vložit > Symbol nebo zadáním kódu a stisknutím kláves Alt+X. Tím se hodnota převede na příslušný znak podle standardních postupů. Viz také seznam kódů Alt pro vkládání symbolů z klávesnice.

V programovacích jazycích : v Pythonu 3 jsou řetězce již kódovány v Unicode; v Javě a C# můžete použít escape znaky '\uXXXX'; v HTML '&#xXXXX;'. Důležité je, aby editace, kompilace a přenos používaly stejné kódování, aby se předešlo chybám.

Kopírování a vkládání symbolů funguje, pokud je celý řetězec v kódování Unicode . Pokud jeho části používají jiné kódování, mohou se zobrazit otazníky, čtverečky nebo jiné podivné symboly.

Databáze znaků (UCD), vlastnosti a kategorie

Databáze znaků Unicode (UCD) zveřejňuje pro každý kódový bod jeho název, kategorii, písmo, vlastnosti velikosti písmen, směrovost a další charakteristiky . Tyto informace jsou nezbytné pro správné fungování vykreslovacích modulů a zpracování textu.

Díky těmto vlastnostem se mohou různé komponenty a algoritmy (jako je třídění, segmentace slov nebo transformace velkých/malých písmen) chovat konzistentně se stejnými daty.

Verze a rozšíření normy: hlavní body

Unicode se s každou verzí rozrůstá a zahrnuje nová písma, symboly a emoji. Mezi klíčové milníky patří verze 1.0 v roce 1991 se 7 161 znaky a následná rozšíření, která přidala tisíce nových symbolů, ideogramů, emoji a písma.

Například v roce 2022 verze 15.0 přidala 4 192 dalších ideogramů CJK a dalších prvků, čímž dosáhla přibližně 149 186 znaků.

Nástroje pro prozkoumávání tabulky Unicode

Existují bezplatné nástroje pro vyhledávání a analýzu znaků : Unibook Character Browser, SYMBL a Branah.com umožňují dotazovat se na vlastnosti, názvy a bloky znaků, což vývojářům a tvůrcům obsahu usnadňuje rychlé nalezení potřebných informací.

Případy použití: adresní formuláře, internacionalizace a obchod

Umožnění uživatelům zadávat adresy ve vlastním jazyce a písmu pomáhá snižovat chyby a zlepšovat uživatelský zážitek. Interoperabilita Unicode navíc zabraňuje problémům s konverzí mezi různými systémy a zachovává integritu textu v celém digitálním řetězci.

Z tohoto důvodu je Unicode základním prvkem, který zajišťuje, že text zůstane v celé digitální infrastruktuře , od webových formulářů přes databázové systémy až po tištěné dokumenty, ať už ve stejné větě použijete „ñ“, arabštinu, čínštinu nebo emoji.

Binární číslování
Související článek:
Binární číslování: Tajný jazyk počítačů