Univerzální kódovaná znaková sada - Universal Coded Character Set

Univerzální kódovaná sada znaků
Přezdívky UCS, Unicode
Jazyk (y) Mezinárodní
Standard ISO/IEC 10646
Formáty kódování UTF-8 , UTF-16 , GB18030
Méně časté : UTF-32 , BOCU , SCSU , UTF-7
Předchází ISO 8859 , ISO 2022 , různé další.

Universal Coded Character Set ( UCS , Unicode ) je standardní sada znaků definován Mezinárodní norma ISO / IEC  10646 , Informační technologie - Univerzální Coded Character Set (UCS) (plus změny této normy), který je základem mnoha kódování znaků , zlepšující se přidáním znaků z dříve nereprezentovaných psacích systémů.

UCS má k dispozici více než 1,1 milionu možných kódových bodů k použití/přidělení, ale pouze prvních 65 536, což je základní vícejazyčná rovina (BMP), se začalo běžně používat před rokem 2000. Tato situace se začala měnit, když Čínská lidová republika ( ČLR) v roce 2006 rozhodl, že veškerý software prodávaný v jeho jurisdikci bude muset podporovat GB 18030 . K přesunu za hranice BMP to vyžadovalo software určený k prodeji v ČLR.

Systém záměrně ponechává mnoho kódových bodů, které nejsou přiřazeny znakům, a to ani v BMP. Dělá to pro budoucí rozšíření nebo pro minimalizaci konfliktů s jinými formami kódování.

Kódovací formuláře

ISO/IEC 10646 definuje tři formy kódování znaků (a sedm schémat kódování ) pro univerzální kódovanou sadu znaků. UCS-2 již není jedním z nich, byl nejjednodušší a nyní je zastaralý, používá jedinou hodnotu kódu (definovanou jako číslo, z nichž jeden nebo více obecně představuje bod kódu, ale pro UCS-2 je striktně jedna hodnota kódu, která představuje bod kódu) mezi 0 a 65 535 pro každý znak a umožňuje reprezentovat tuto hodnotu přesně dva bajty (jedno 16bitové slovo). UCS-2 tím umožňuje binární reprezentaci každého kódového bodu v BMP, který představuje znak. UCS-2 nemůže reprezentovat body kódu mimo BMP.

První dodatek k původnímu vydání UCS definoval UTF-16 , rozšíření UCS-2, aby reprezentoval kódové body mimo BMP. Rozsah kódových bodů v zóně S (speciální) BMP zůstává nepřiřazen znakům. UCS-2 zakazuje použití hodnot kódu pro tyto body kódu, ale UTF-16 umožňuje jejich použití ve dvojicích. Unicode také přijal UTF-16, ale v terminologii Unicode se prvky vysoké poloviny zóny stanou „vysokými náhradními“ a prvky nízké poloviny zóny se stanou „nízkými náhradními“.

Další kódování, UTF-32 (dříve pojmenované UCS-4), používá ke kódování jednoho znaku kódového prostoru čtyři bajty (celkem 32 bitů) . UTF-32 tak umožňuje binární reprezentaci každého kódového bodu v UCS, včetně těch mimo BMP. Stejně jako v UCS-2 má každý kódovaný znak pevnou délku v bajtech, což usnadňuje manipulaci, ale samozřejmě vyžaduje dvojnásobné úložiště než UCS-2.

V současné době je dominantním kódováním UCS UTF-8 , což je kódování s proměnnou šířkou určené pro zpětnou kompatibilitu s ASCII a pro zamezení komplikací endianness a značek pořadí bajtů v UTF-16 a UTF-32. Více než 97% všech webových stránek je kódováno v UTF-8. Internet Engineering Task Force (IETF) vyžaduje, aby všechny internetové protokoly identifikovaly kódování používané pro znaková data a podporované kódování znaků musí obsahovat UTF-8. Internet Mail Consortium (IMC) doporučuje, aby všechny e-mailové programy mohly zobrazovat a vytvářet poštu pomocí UTF-8. Stále častěji se také používá jako výchozí kódování znaků v operačních systémech, programovacích jazycích, API a softwarových aplikacích.

Dějiny

Mezinárodní organizace pro normalizaci (ISO) se rozhodl sestavit univerzální znakovou sadu v roce 1989, a zveřejnila návrh normy ISO 10646 v roce 1990. Hugh McGregor Ross byl jedním z jejích hlavních architektů. Tento standard se výrazně liší od současného. Definovalo to:

  • 128 skupin
  • 256 letadel
  • 256 řádků
  • 256 buněk,

pro zdánlivý součet 2 147 483 648 znaků, ale ve skutečnosti standard mohl kódovat pouze 679 477 248 znaků, protože zásada zakazovala bajtové hodnoty řídicích kódů C0 a C1 (0x00 až 0x1F a 0x80 až 0x9F, v hexadecimálním zápisu) v kterémkoli ze čtyř bajtů určující skupinu, rovinu, řádek a buňku. Latinské velké písmeno A například mělo umístění ve skupině 0x20, rovina 0x20, řada 0x20, buňka 0x41.

Znaky této prvotní normy ISO 10646 lze kódovat jedním ze tří způsobů:

  1. UCS-4, čtyři bajty pro každý znak, umožňující jednoduché kódování všech znaků;
  2. UCS-2, dva bajty pro každý znak, umožňující kódování první roviny 0x20, základní vícejazyčné roviny, obsahující prvních 36 864 kódových bodů, přímočaře, a další roviny a skupiny přepnutím na ně pomocí únikových sekvencí ISO 2022 ;
  3. UTF-1 , který kóduje všechny znaky v sekvencích bajtů různé délky (1 až 5 bajtů, z nichž každý neobsahuje žádné řídicí kódy).

V roce 1990 proto existovaly dvě iniciativy pro univerzální znakovou sadu: Unicode s 16 bity pro každý znak (65 536 možných znaků) a ISO 10646. Softwarové společnosti odmítly přijmout požadavek na komplexnost a velikost normy ISO a dokázaly přesvědčit řadu národních orgánů ISO, aby hlasovaly proti. Normalizátoři ISO si uvědomili, že nemohou nadále podporovat standard v jeho současném stavu, a vyjednávali o sjednocení jeho standardu s Unicode. Došlo ke dvěma změnám: zrušení omezení znaků (zákaz hodnot řídicích kódů), čímž se otevřelo kódové body jako 0x0000101F pro přidělování; a synchronizaci repertoáru Základní vícejazyčné roviny s Unicode.

Mezitím se v průběhu času situace změnila v samotném standardu Unicode: 65 536 znaků se zdálo nedostatečných a standard od verze 2.0 a novější podporuje kódování 1 112 064 kódových bodů ze 17 letadel pomocí náhradního mechanismu UTF-16 . Z tohoto důvodu byla ISO 10646 omezena tak, aby obsahovala tolik znaků, kolik by bylo možné kódovat pomocí UTF-16, a ne více, tedy něco přes milion znaků místo více než 679 milionů. Kódování UCS-4 ISO 10646 bylo začleněno do standardu Unicode s omezením na rozsah UTF-16 a pod názvem UTF-32 , přestože mimo interní data programů téměř nepoužívá.

Rob Pike a Ken Thompson , návrháři operačního systému Plan 9 , vymysleli nové, rychlé a dobře navržené kódování se smíšenou šířkou, kterému se začalo říkat UTF-8 , v současnosti nejpopulárnější kódování UCS.

Rozdíly oproti Unicode

ISO 10646 a Unicode mají shodný repertoár a čísla - na obou standardech existují stejné znaky se stejnými čísly, přestože Unicode vydává nové verze a přidává nové znaky častěji. Unicode má pravidla a specifikace mimo rozsah ISO 10646. ISO 10646 je jednoduchá mapa znaků, rozšíření předchozích norem, jako je ISO 8859 . Naproti tomu Unicode přidává pravidla pro řazení , normalizaci formulářů a obousměrný algoritmus pro skripty zprava doleva, jako je arabština a hebrejština. Pro interoperabilitu mezi platformami, zejména pokud jsou použity obousměrné skripty, nestačí podporovat ISO 10646; Musí být implementován Unicode.

Na podporu těchto pravidel a algoritmů přidává Unicode každému znaku v sadě mnoho vlastností, jako jsou vlastnosti určující výchozí obousměrnou třídu postavy a vlastnosti, které určují, jak se znak kombinuje s jinými znaky. Pokud znak představuje číselnou hodnotu, jako je evropské číslo „8“ nebo vulgární zlomek „¼“, je tato číselná hodnota také přidána jako vlastnost znaku. Unicode zamýšlí tyto vlastnosti podporovat interoperabilní zpracování textu se směsí jazyků.

Některé aplikace podporují znaky ISO 10646, ale plně nepodporují Unicode. Jedna taková aplikace, Xterm , dokáže správně zobrazit všechny znaky ISO 10646, které mají mapování znaků ke glyfům jedna k jedné a jedinou směrovost. Dokáže zpracovat některé kombinující značky jednoduchými metodami přeškrtnutí, ale nemůže zobrazit hebrejštinu (obousměrné), devanagari (jeden znak pro mnoho glyfů) nebo arabštinu (obě funkce). Většina aplikací GUI používá standardní rutiny pro kreslení textu OS, které takové skripty zpracovávají, i když samotné aplikace je stále ne vždy zpracovávají správně.

Citace univerzální kódované znakové sady

ISO 10646 , obecná neformální citace pro skupinu norem ISO/IEC 10646, je ve většině próz přijatelná. A přestože se jedná o samostatný standard, termín Unicode se při diskusi o UCS používá stejně často, neformálně. Jakékoli normativní odkazy na UCS jako publikaci by však měly uvádět rok vydání ve formě ISO/IEC 10646: {rok} , například: ISO/IEC 10646: 2014 .

Vztah s Unicode

Od roku 1991 Unicode Consortium a ISO vyvinuly standard Unicode Standard („Unicode“) a ISO/IEC 10646 v tandemu. Repertoár, názvy znaků a kódové body Unicode verze 2.0 přesně odpovídají těm z ISO/IEC 10646-1: 1993 s jeho prvními sedmi publikovanými dodatky. Po vydání Unicode 3.0 v únoru 2000 vstoupily do UCS odpovídající nové a aktualizované znaky prostřednictvím ISO/IEC 10646-1: 2000. V roce 2003 byly části 1 a 2 normy ISO/IEC 10646 sloučeny do jedné části, která od té doby prošla řadou dodatků přidávajících znaky ke standardu v přibližné synchronizaci se standardem Unicode.

  • ISO/IEC 10646-1: 1993 = Unicode 1.1
  • ISO/IEC 10646-1: 1993 plus dodatky 5 až 7 = Unicode 2.0
  • ISO/IEC 10646-1: 1993 plus Dodatky 5 až 7 = Unicode 2.1 bez znaku Euro a znaku nahrazujícího objekt , které jsou zahrnuty v dodatku 18
  • ISO/IEC 10646-1: 2000 = Unicode 3.0
  • ISO/IEC 10646-1: 2000 a ISO/IEC 10646-2: 2001 = Unicode 3.1
  • ISO/IEC 10646-1: 2000 plus dodatek 1 a ISO/IEC 10646-2: 2001 = Unicode 3.2
  • ISO/IEC 10646: 2003 = Unicode 4.0
  • ISO/IEC 10646: 2003 plus dodatek 1 = Unicode 4.1
  • ISO/IEC 10646: 2003 plus Dodatky 1 až 2 = Unicode 5.0 kromě Devanagari Letters GGA, JJA, DDDA a BBA, které jsou zahrnuty v dodatku 3
  • ISO/IEC 10646: 2003 plus dodatky 1 až 4 = Unicode 5.1
  • ISO/IEC 10646: 2003 plus dodatky 1 až 6 = Unicode 5.2
  • ISO/IEC 10646: 2003 plus dodatky 1 až 8 = ISO/IEC 10646: 2011 = Unicode 6.0 bez indického znaku rupie
  • ISO/IEC 10646: 2012 = Unicode 6.1
  • ISO/IEC 10646: 2012 = Unicode 6.2 s výjimkou znaku turecké liry , který je součástí dodatku 1
  • ISO/IEC 10646: 2012 = Unicode 6.3 s výjimkou znaku turecké liry , který je zahrnut v dodatku 1, a pěti obousměrných ovládacích znaků (arabské písmeno, izolát zleva doprava, izolát zprava doleva, první silný izolát, pop Directional Isolate), které jsou zahrnuty v dodatku 2
  • ISO/IEC 10646: 2012 plus dodatky 1 a 2 = Unicode 7.0 bez označení Rubl
  • ISO/IEC 10646: 2014 plus dodatek 1 = Unicode 8.0 bez znaku Lari , devíti jednotných ideografů CJK a 41 znaků emodži
  • ISO/IEC 10646: 2014 plus Změny 1 a 2 = Unicode 9.0 kromě symbolů Adlam, Newa, japonské televize a 74 emodži a symbolů
  • ISO/IEC 10646: 2017 = Unicode 10.0 kromě 285 znaků Hentaigana , 3 znaků Zanabazar Square a 56 symbolů emoji
  • ISO/IEC 10646: 2017 plus dodatek 1 = Unicode 11.0 kromě 46 velkých gruzínských písmen Mtavruli, 5 jednotných ideografů CJK a 66 znaků emodži
  • ISO/IEC 10646: 2017 plus dodatky 1 a 2 = Unicode 12.0 bez 62 dalších znaků
  • ISO/IEC 10646: 2020 = Unicode 13.0
  • ISO/IEC 10646: 2021 = Unicode 14.0

Viz také

Poznámky

Reference

externí odkazy