ISO/IEC 10646: Porovnání verzí

Smazaný obsah Přidaný obsah
m Robot: vhodnější šablona dle žádosti ze dne 25. 4. 2020; kosmetické úpravy
Řádek 1:
'''ISO/IEC 10646''' je [[Mezinárodní organizace pro normalizaci|mezinárodní norma]] definující '''univerzální kódovanou znakovou sadu''' ({{Vjazyce|en}} {{CizojazyčněVjazyce2|en|''Universal Coded Character Set'', ''UCS''}}), která by měla zahrnovat znaky nutné k reprezentaci prakticky všech známých jazyků. UCS obsahuje znaky z různých standardů znakových sad, včetně množství grafických, [[typografie|typografických]], [[matematika|matematických]] a vědeckých symbolů. Norma ISO/IEC 10646 je vyvíjena v součinnosti s [[Unicode]] – přestože oba standardy nemají zcela totožné zaměření, definují stejnou univerzální znakovou sadu se stejnými kódy znaků.
 
== Kódový rozsah ==
Řádek 12:
 
[[Mezinárodní organizace pro normalizaci]] (ISO) začala práci na UCS v roce 1989 a první pracovní verzi dokumentu ISO 10646 publikovala v roce 1990. Jedním z hlavních tvůrců byl Hugh McGregor Ross. Tehdejší verze se od dnešní značně lišila. Definovala kódový rozsah jako
* 128 skupin ({{Vjazyce|en}} {{CizojazyčněVjazyce2|en|''groups''}}) po
* 256 rovinách ({{Vjazyce|en}} {{CizojazyčněVjazyce2|en|''planes''}}) po
* 256 řádcích ({{Vjazyce|en}} {{CizojazyčněVjazyce2|en|''rows''}}) po
* 256 buňkách ({{Vjazyce|en}} {{CizojazyčněVjazyce2|en|''cells}}).
 
Při lineárním vyjádření se jedná o použití 31bitového kódu. Přestože tímto způsobem by bylo možné zakódovat až 2 147 483 648 znaků, původní standard nedovoloval používat byty s hodnotami [[Řídicí znak|řídicích kódů]] 0 až 0x1F a 0x80 až 0x9F [[šestnáctková soustava|šestnáctkově]] v libovolné z uvedených složek (kromě skutečných řídicích znaků), což snižovalo maximální počet znaků na 679 477 248. Například velké písmeno "A" ({{Vjazyce|en}} {{CizojazyčněVjazyce2|en|''Latin capital letter A''}}) mělo kód skupina 0x20, rovina 0x20, řádek 0x20, buňka 0x41.
 
Tento původní standard ISO/IEC 10646 umožňoval kódovat znaky z UCS třemi metodami:
Řádek 26:
V roce 1990 existovaly dvě skupiny zabývající se vývojem univerzální znakové sady: [[Unicode]] používající 16 bitů pro každý znak (s 65536 možnými znaky) a ISO/IEC 10646. Softwarové firmy odmítly přijmout složitost a velikostní požadavky ISO standardu a byly schopny přesvědčit několik národních organizací z ISO, aby hlasovaly proti ISO/IEC 10646. Tvůrci ISO/IEC 10646 zjistili, že v této situaci nemohou ve vývoji standardu pokračovat, a proto proběhla jednání o sjednocení ISO standardu s Unicode. Z pohledu ISO/IEC 10646 došlo ke dvěma základním změnám: bylo zrušeno omezení zakazující používat hodnoty řídicích znaků v libovolné složce kódu, takže lze používat kódové body jako 0x0000101F; byla dohodnuta synchronizace znakové sady a kódů znaků z Basic Multilingual Plane mezi ISO/IEC 10646 Unicode.
 
Během doby se ukázalo, že jsou nutné i změny ve standardu Unicode: ukázalo se, že 65536 znaků ne zcela postačuje a standard od verze 2.0 podporuje používání až 1 112 064 kódových bodů ze [[Unicode rovina|17 rovin]] pomocí mechanismu [[UTF-16]] náhradních dvojic ({{Vjazyce|en}} {{CizojazyčněVjazyce2|en|''surrogate pairs''}}). Z tohoto důvodu byl rozsah kódů ISO/IEC 10646 omezen na znaky, které lze vyjádřit pomocí UTF-16, tj. něco přes milion znaků místo více než 679 milionů. Kódování UCS-4 bylo převzato do standardu Unicode s omezením na rozsah podporovaný UTF-16 a se jménem [[UTF-32]], ačkoli se kromě interních dat programů téměř nepoužívá.
 
[[Rob Pike]] a [[Ken Thompson]], tvůrci [[Operační systém|operačního systému]] [[Plan 9 from Bell Labs|Plan 9]] navrhli nové, rychlé a dobře navržené kódování s proměnnou délkou znaku, které bylo nazváno [[UTF-8]]<ref>{{Citace elektronické monografie
Řádek 39:
== Struktura UCS ==
 
UCS se skládá ze 17 rovin ({{Vjazyce|en}} {{CizojazyčněVjazyce2|en|''planes''}}):
 
* Basic Multilingual Plane (BMP, rovina 00)
Řádek 49:
* Roviny 0F a 10 jsou rezervovány pro soukromé použití
 
UCS každému znaku přiřazuje nejen číselný kód, ale i oficiální jméno. Hexadecimální číslo reprezentující UCS nebo [[Unicode]] hodnotu je obvykle uvedeno znaky „U+“, jako např. U+0041 je znak velké latinské písmeno A ({{Vjazyce|en}} {{CizojazyčněVjazyce2|en|''Latin capital letter A''}}). UCS znaky U+0000 až U+007F jsou shodné se znaky [[ASCII]] tabulky a znaky U+0000 až U+00FF jsou shodné s kódem [[ISO 8859-1]].
 
== Rozdíly mezi ISO/IEC 10646 a Unicode ==
Řádek 60:
UCS definuje tzv. kombinované znaky. Jsou to symboly které mají význam v kombinaci s jiným znakem a tvoří společně určitý symbol. Příkladem mohou být i česká diakritická znaménka. Část kombinovaných znaků má svůj samostatný kód, který vznikl historicky při kódování národních abeced. Pro účely matematických a dalších symbolů je možné vytvářet další kombinace, přidávat akcenty a diakritiku nad libovolný znak (např. šipku nad matematickou proměnnou).
 
Všechny informační systémy nepotřebují nutně všechny vlastnosti UCS. Jsou proto definovány následující implementační úrovně ({{Vjazyce|en}} {{CizojazyčněVjazyce2|en|''implementation levels''}}):
* Level 1: Kombinované znaky a znaky „Hangul Jamo“ (moderní korejská varianta abecedy) nejsou podporovány.
* Level 2: Jsou podporovány pevně definované kombinované znaky.
* Level 3: Jsou podporovány všechny znaky UCS, libovolné varianty kombinovaných znaků.
 
== Vztahy mezi verzemi ISO/IEC 10646 a Unicode ==