Unicode: Porovnání verzí

Odebráno 1 259 bajtů ,  před 2 lety
doplnění odkazu na GB18030, smazání přebytečných "informací" v odstavci o kódování
(doplnění odkazu na GB18030, smazání přebytečných "informací" v odstavci o kódování)
Úspěch Unicode v unifikaci znakových sad vedl k jeho rozšíření a převládajícímu používání pro [[Internacionalizace a lokalizace|internacionalizaci a lokalizaci]] [[Software|počítačového softwaru]]. Unicode je implementován mnoha technologiemi, včetně moderních [[operační systém|operačních systémů]], [[XML]], [[Java (programovací jazyk)|programovacím jazykem Java]] a [[.NET]] Frameworkem firmy [[Microsoft]].
 
Unicode definuje několik způsobů reprezentace textů různými [[znakový kód|znakovými kódy]]. K nejpoužívanějším kódováním patří [[UTF-8]], [[UTF-16]] a zastaralé [[UCS-2]]. UTF-8 používá jeden [[bajt]] pro libovolný [[ASCII]] znak, přičemž všechny ASCII znaky mají v UTF-8 stejné kódové hodnoty jako ASCII a dva až čtyři bajty pro jiné znaky. UCS-2 používá 16bitové kódové jednotky (dva [[oktet (informatika)|8bitové bajty]]) pro každý znak, ale neumožňuje kódovat všechny znaky v aktuálním standardu Unicode. UTF-16 je rozšíření UCS-2, které pomocí dvou 16bitových jednotek (4 × 8 bit) umožňuje kódovat všechny znaky z Unicode. V Číně se používá kódování [[GB 18030|GB18030]], které přebírá celý znakový repertoár Unicode, proto je také jedním ze způsobů kódování Unicode. Mapování GB18030 na UTF-32 je však netriviální (potřebuje převodní tabulku).
 
Nevýhodou unicode může být složitější zpracování, nebo že stejný text zabírá více prostoru na disku nebo v operační paměti počítače. Ovšem výhody univerzální znakové sady drtivě převažují, což je vidět mj. na tom, že starší osmibitové znakové sady jsou dnes definované jako podmnožiny Unicode.
 
== Historie ==
 
== Původní cíle standardu Unicode ==
;* '''Jednotnost:''' - Konstantníkonstantní šířka znaků dovoluje efektivní hledání, třídění, editace a zobrazení prvků.
 
;* '''Univerzálnost:''' - Kapacitakapacita znakové sady musí být dostatečně velká k zahrnutí všech znaků, které by mohly být využity při výměně textů – především ty, které už byly definovány v hlavních mezinárodních, národních a průmyslových znakových sadách.
;Jednotnost: Konstantní šířka znaků dovoluje efektivní hledání, třídění, editace a zobrazení prvků.
;* '''Jednoznačnost:''' Jakákoli- jakákoli 16bitová hodnota,(dnes která32bitová) hodnota zastupuje v jakémkoliv kontextu stejný znak.
 
;* '''Maximální využití:''' Text- text poskládaný z posloupnosti znaků o konstantní šířce může být velmi lehcesnadno zpracován; software si nemusí zachovávatuchovávat stav, dávat si pozor na speciální escape sekvence nebo prohledávat text dopředu či zpět kvůli určení totožnosti znaků.
;Univerzálnost: Kapacita znakové sady musí být dostatečně velká k zahrnutí všech znaků, které by mohly být využity při výměně textů – především ty, které už byly definovány v hlavních mezinárodních, národních a průmyslových znakových sadách.
 
;Jednoznačnost: Jakákoli 16bitová hodnota, která zastupuje v jakémkoliv kontextu stejný znak.
 
;Maximální využití: Text poskládaný z posloupnosti znaků o konstantní šířce může být velmi lehce zpracován; software nemusí zachovávat stav, dávat si pozor na speciální escape sekvence nebo prohledávat text dopředu či zpět kvůli určení totožnosti znaků.
 
Standard Unicode se oproti ISO 10646 navíc zabývá implementací algoritmů pro písma psaná zprava doleva (např. [[arabština]]), podporou oboustranných textů (jako např. směs hebrejštiny a latinky), algoritmy pro [[abecední řazení|řazení]] a porovnávání textů.
 
V současné chvílisoučasnosti existuje Unicode ve verzi 5.2, která vyšla v roce 2009.<ref>[http://www.unicode.org/standard/standard.html About the Unicode Standard]</ref> Celkem obsahuje více než 245 000 znaků a symbolů z 90 různých jazyků a abeced.<ref>[http://www.unicode.org/charts/ Unicode Scripts]</ref> Unicode Consortium již v této chvíli zaručuje, že všechny nové verze budou zpětně kompatibilní s předchozími, tj. že nové standardy budou přidávat další znaky, ale žádné již nebudou odstraňovat ani měnit.
 
Unicode není používán pro kódování různých nesmyslných a zřídkakdy používaných znaků nebo, znaků pro osobní potřebu, aninebo grafiky. UměléRovněž znaky,neobsahuje použitéspeciální pouzeznaky pro přechodné vkládání textu,. jsouUnidoce vynechány.také Obrázkynezahrnuje bezznaky souvislostikteré neslouží k zápisu textu, jako jsou například taneční či hudební značky,. nezasahujíRovněž dose činnostinezabývá Unicode. Různosti vvariantami zobrazení znaků nejsou znázorňovány(fonty). VVe rámciznakovém repertoáru Unicode kódování je vyhrazeno 6400 znaků pro potřebu programů; využívání těchto, kódůjejichž programyvyužití není nijak omezeno.
 
V souvislosti s jazyky jako je [[wachánština]], jejichž ortografie založené na [[latinka|latince]] používají několik znaků [[cyrilice]] či [[řecké písmo|řeckého písma]], byla řešena otázka, zda kvůli nim do Unicode přidat znaky jako ''latinská [[delta (písmeno)|delta]]'', ''latinská [[théta]]'' či ''latinské [[Ы|jery]]'' jako latinské protějšky těchto řeckých a cyrilských písmen.<ref name="Jim Allan, Unicode">Jim Allan, [https://www.mail-archive.com/unicode@unicode.org/msg14260.html mixed-script writing systems], 2002-11-15, cit. 2014-08-27</ref> Jeden z názorů na tuto problematiku je, že požadavek, aby jazyk byl zapisován pouze znaky jednoho písma je umělý a že v minulosti si různé jazyky půjčovaly písmena i z jiných písem, takže na soubor písmen latinky, cyrilice a řeckého písma může být nahlíženo jako na latinsko-cyrilsko-řecké metapísmo a tedy pro zápis těchto jazyků používat písmena v Unicode již obsažené místo vytváření nových.<ref>Kenneth Whistler, [https://www.mail-archive.com/unicode@unicode.org/msg14261.html mixed-script writing systems], 2002-11-15, cit. 2014-08-27</ref> I v případě, kdy by tato písmena byla zavedena, lze očekávat, že by i nadále pro zápis byly používány řecké a cyrilské verze těchto písmen, protože latinské verze by byly obsaženy pouze v malém počtu fontů.<ref name="Jim Allan, Unicode" />
* Interpunkční znaménka
** obecná interpunkce
** [[CJK]]
* Symboly
** alfanumerické
 
=== Znaky Unicode ===
Sjednocení světového kódování znaků je skvělá, ale šestnáctibitové kódování s sebou nese a přináší i několik nevýhod a to:
 
Každý znak má jednoznačný číselný kód a svůj název. Navíc Unicode definuje u každého znaku některé základní vlastnosti, jako např. zda se jedná o písmeno, symbol atd., zda je písmeno [[majuskule|velké]] či [[minuskule|malé]] atp.
;256× větší znaková sada: Znaky na PC se zobrazí fonty, které kvůli Unicode musí obsahovat 256× víc znaků, než pro 8bitové znakové sady. Pokud přihlédneme k tomu, že v dost jazycích se využije jen malá část z celkového množství, tak znaky úplně zbytečně zabírají místo. Tuto věc Microsoft řeší tak, že Unicode fonty neobsahují úplně všechny znaky, ale jen tu část, která je plně využívaná v určitém prostředí.
 
;Délka textu: Text je po převádění z osmibitového kódování Unicode 2× delší, ale bez přidání nějaké informační hodnoty. Výsledný text zabere víc místa při uložení a také další zpracování je pomalejší.
 
;Neslučitelnost s osmibitovým prostředím: Unicode text může mít znaky, které v "normálním", osmibitovém textu normálně nejsou a většinou mají speciální význam - jde především o binární nulu, kterou Unicode text může obsahovat jako vyšší bajt dvoubajtového kódu. Nejde tedy použít stávající programový kód pro práci s textem a musí se od začátku přepsat. Nejde lehce zjistit, jestli text je v Unicode nebo ne, nejde proto lehce zároveň používat Unicode a nějaké další osmibitové kódování. Není možné přejít na Unicode jen z části, je nutný celkový přechod, aby aplikace nejen dostaly text v Unicode, ale aby hlavně Unicode text i očekávaly. Okolnost, že to jde v rámci uzavřeného systému, ukazuje firma Sun s Javou, pracující vnitřně v Unicode, a také produkty firmy Microsoft. Subvenci Unicode však nelze zajistit obecně a nelze kalkulovat s tím, že mu druhá strana bude vždy rozumět – uveřejnění v poště nebo na WWW stránkách je tedy velmi problematické. Ale v tomto bodě se však situace pomalu mění k lepšímu.
 
Každý znak má jednoznačný číselný kód a svůj název. Navíc Unicode definuje u každého znaku některé základní vlastnosti jako např. zda se jedná o písmeno, symbol atd., zda je písmeno [[majuskule|velké]] či [[minuskule|malé]] atp.
 
Tabulka Unicode poskytuje prostor pro 1&nbsp;114&nbsp;112 znaků s kódy 0<sub>16</sub> až 10FFFF<sub>16</sub>. Tento prostor se dělí na 17 částí, každý o velikosti 2<sup>16</sup>. První část se nazývá ''Basic Multilingual Plane'' (BMP) a obsahuje znaky běžně používaných abeced. Původní 16bitový návrh Unicode počítal jen s BMP, následně se ale ukázalo, že pro pokrytí všech používaných abeced to nestačí.
 
Prvních 128 znaků (tj. sedmibitové kódy) obsahuje znakovou sadu [[ASCII]]. Osmibitové kódy (tj. prvních 256 znaků) obsahujeobsahují znakovou sadu [[ISO 8859-1]] (ISO 8859-1 obsahuje ASCII).
 
=== Kódování ===
 
Kódování UTF-32, UTF-16 a UCS-2 mají každá své varianty podle používaného [[endianita|pořadí bajtů]]. Buď je napevno stanoveno pořadí little-endian, resp., big-endian, nebo se toto pořadí určuje podle tzv. ''[[byte order mark]]'' (BOM), speciální značky umístěné na začátku textu.
 
Za kódování Unicode můžeme považovat také čínský standard [[GB 18030|GB18030]].
 
==== UTF-32 ====
733

editací