Počítače Okna Internet

Standard kódování Unicode přiděluje každému znaku. Co je Unicode

Unicode je kódovací systém, který přiřazuje jedinečný kód libovolnému znaku, bez ohledu na platformu, bez ohledu na program, bez ohledu na jazyk.

Dokonce i v samotném názvu této poznámky je určitá nepřesnost - nebo spíše rozpor. Faktem je, že stále neexistuje jednomyslnost o tom, jak správně hláskovat anglické slovo Unicode v ruských písmenech - Unicode nebo Unicode. Nyní použijeme první možnost pravopisu.

Někdy, když otevřete dokumenty nebo zobrazíte stránky místo polských písmen, existuje několik "křoví". Tyto chyby mohou být způsobeny nesprávným kódováním znaků. Text, který vidíte na obrazovce, počítač ukládá ve formě nul a jedniček, které jsou zabaleny do osmi částí. Jedna nula nebo jeden bit; Skupina osmi je bajt. Elektronická zařízení ukládají informace v bajtech, včetně textu.

Dobře, ale jak mohou všechny tyto části počítače tvořit historii? Desítka bude vypadat takto: takovým způsobem, abychom zapisovali čísla, nazýváme binární, naučili jsme se používat desetinná čísla. To se provádí tak, že každému znaku je přiřazeno číslo. Věta „Alla má kočku“ je soubor čísel.

Unicode není jen vícebajtové kódování pro reprezentaci mnoha znaků, jak si mnoho lidí myslí, i když takovou definici lze do jisté míry považovat za správnou. Oficiálně je definice tato: Unicode je kódovací systém, který přiřazuje jedinečný kód libovolnému znaku bez ohledu na platformu, bez ohledu na program, bez ohledu na jazyk.

Všimněte si, že velká a malá písmena jsou pro počítač samostatným znakem a mezery jsou také znakem, i když nejsou viditelné. Navíc se s jednotlivými číslicemi zachází stejně. Například znaku 1 není přiřazeno číslo 1, ale pouze.

Ne, ale odkud počítač ví, která postava je přiřazena Tohle číslo? Odpovědí je kódování znaků. Obecně lze říci, že jde o tabulku se všemi symboly a čísly, které jsou k nim přiřazeny. Postupem času toto číslo již nestačí - počítače získaly nové možnosti a staly se populárnějšími v jiných zemích se speciálními písmeny.

Unicode standard je rozdělen na dvě části. První je sada čísel odpovídajících každému znaku v každé podporované abecedě. Říká se tomu Universal Character Set, nebo jen UCS. Všechna čísla použitá v kódovém prostoru UCS jsou celá a nezáporná. Tato čísla - kódové pozice - jsou označeny jako U + 0000, U + 0001, U + 0002 atd. Tím vším není kódový prostor homogenní, ale je rozdělen do několika sémantických oblastí. Kódy od U + 0000 do U + 007F jsou znaky ASCII, po nichž následují znaky z různých národních abeced, interpunkce a technické znaky, jako je návrat vozíku na nový řádek. Druhou částí standardu jsou ve skutečnosti kódování, která poskytují bitovou reprezentaci každého kódu v textu.

Ačkoli oba mají více než dvě stě padesát znaků, toto číslo stále nestačí na to, aby fungovalo ve všech jazycích, takže každá jazyková rodina má svou vlastní verzi těchto kódování. Tomu se říká kódová stránka. Všechny měly stejný původ, takže zahrnovaly interpunkční znaménka, velká a malá anglická písmena a čísla. Zbytek znaků se však verze od kódu lišil.

Ale ani zavedení kódových stránek nevyřešilo všechny problémy. Prvním je interoperabilita standardů. I když je prvních 127 znaků stejných pro všechny standardy, zbytek znaků je uspořádán podle jejich vlastního znázornění. Slovo roh napsaný v tomto prvním rohu se otevře po otevření systému pro druhý standard.

Všechny znaky unicode jsou rozděleny do dvou typů – rozšířené a bezšířkové (modifikující). Rozšířené znaky jsou obvyklá písmena, kterými se tato poznámka zadává. Upravující jsou znaky nad písmeny, jako jsou akcenty, tečky, „velice“ atd., atd. Většina písmen s podobnými znaky pro všechny abecedy je prezentována jako sekvence rozšířených a modifikujících symbolů. Je pravda, že cyrilice "e" a "y" jsou prezentovány jako samostatné rozšířené znaky.

Dalším problémem je, že 256 znaků je stále málo na plynulé psaní dokumentů. Ve většině případů to stačí, ale problémy nastanou, když se potřebujete obrátit na pana Möllera, Pütze nebo Strassmanna s jeho diplomovou prací. Vložte azbuku nebo zadejte Řecká písmena do složitého matematického vzorce.

Je zapotřebí nová metoda kódování, která bude zahrnovat všechny možné znaky používané ve všech jazycích světa. Díky tomu je méně časté chyby. Objevil se však další problém - tolik možných znaků neumožňovalo zapsat za ně 1 byte. Jeden bajt se skládá z osmi nebo nul, což umožňuje jejich uspořádání různými způsoby. Tolik znaků má kódové stránky. Chcete-li zvýšit počet znaků podporovaných systémem kódování, musíte zvýšit počet bajtů potřebných k vložení písmene.

Nejběžnější praktickou implementací Unicode je UTF-8. Tento standard poskytuje dobrou kompatibilitu se starými ASCII texty díky tomu, že znaky anglické abecedy a další běžné znaky (tj. znaky s ASCII kódy od 0 do 127) jsou zapsány v jednom bajtu. Zbytek znaků je zapsán ve velkém počtu bajtů – od dvou do šesti.

Nedávno byl ke znaku Unicode přidán znak turecké liry. Přiřazené číslo je 110 Pokud by každé písmeno mělo být obsazeno 3 bajty, i ty od začátku s jedním by zvýšily prostor potřebný k uložení souboru na disk.

Vývojáři přišli s nápadem, že postavy by neměly mít konstantní počet bajtů. A proto, aby fungovaly na počítači, odpovídají kódování. Změňte kódování znaků v každém z těchto tří a zkontrolujte, zda se zobrazují všechna písmena. Pokud potřebujete svou stránku zakódovat tímto způsobem, stáhněte si bezplatný a výkonnější poznámkový blok.

Unicode a související standardy jsou vyvíjeny Unicode Consortium. Jak se píše na oficiálních stránkách této organizace www.unicode.org, „Unicode Consortium je nezisková organizace založená za účelem vývoje a rozvoje standardu Unicode definujícího reprezentaci textových informací v moderních softwarových produktech a standardech a podporovat jeho široké šíření a používání Členové Konsorcium je velký počet korporací a organizací působících v oblasti zpracování informací a počítačového průmyslu Finanční podpora Konsorcia se uskutečňuje výhradně prostřednictvím členských příspěvků jeho členů Členství v Unicode Consortium je otevřené jakékoli organizaci nebo jednotlivci, kteří podporují standard Unicode a chtějí pomoci s jeho šířením a implementací." Připoj se k nám! :)

Popis v tomto článku je založen na Betě 8, která je dostupná pouze úzkému okruhu beta testerů. Jak se beta testování blíží ke konci, je velmi pravděpodobné, že většina popsaných funkcí a funkcí se skutečně objeví v konečné verzi. Nejvýraznější změny a novinky týkající se aktuální verze 51 se budeme věnovat v každém z tematických bloků.

Práce se soubory a vzhled aplikace

Nová šestá verze na této organizaci pracovního prostoru nic nemění, ale výrazně rozšiřuje možnosti těchto dvou oken. Pokud se zeptáte jak, odpovědi jsou „záložkou“. Každé okno nyní může rychle přepínat mezi jakoukoli složkou, kterou definujeme. Můžete vytvořit tolik záložek, kolik chcete, a můžete rychle přepínat mezi různými složkami v jednom okně. Se záložkami můžete dále pracovat. Každá z karet se chová jako samostatný souborový panel, takže s ní můžeme pracovat starým způsobem.

Norma Unicode neboli ISO / IEC 10646 je výsledkem spolupráce mezi Mezinárodní organizací pro normalizaci (ISO) a předními výrobci počítačů a software... Důvody uvedené na předchozí stránce je přivedly k zásadně nové formulaci otázky: proč vynakládat úsilí na vývoj samostatných kódových tabulek, když je možné vytvořit jedinou tabulku pro všechny národní jazyky? Takový úkol se zdá být přehnaně ambiciózní, ale jen na první pohled. Faktem je, že z 6 700 živých jazyků je asi padesát oficiálních jazyků států a používají asi 25 různých písem: čísla pro náš počítačový věk jsou docela předvídatelná.

Záložky se zobrazí pouze v případě, že v okně pomocí alespoň dva. Při kopírování velkého množství dat, která přetrvávají dlouhou dobu, mohou být v předchozích verzích použity kopie na pozadí. Tato oblíbená funkce samozřejmě zůstala zachována a přinesla několik novinek v nové verzi.

Pokud jej vyberete, zobrazí se rozšířený dialog kopírování na pozadí, kde můžete pozastavit kopírování a nastavit maximální datový tok, který se bude kopírovat. Do tohoto okna lze navíc průběžně přidávat soubory. Tento režim "řeší" problémy některých uživatelů, kteří se za běhu intenzivně vyrovnávají s více oken - mohou instalovat maximální rychlost přenášet a třídit soubory postupně ve frontě, aby se výrazně snížilo celkové zatížení disku.

Předběžný odhad ukázal, že 16bitový rozsah je dostatečný pro zakódování všech těchto skriptů, tedy rozsah od 0000 do FFFF. Každému skriptu byl v tomto rozsahu přidělen vlastní blok, který se postupně plnil kódy znaků tohoto skriptu. Dnes lze kódování všech živých oficiálních skript považovat za úplné.

Nyní může funkce vytváření složek vytvářet i adresářovou strukturu. Další vylepšení při práci se soubory. Synchronizace adresářů má dvě velká vylepšení. V hlavním modulu přejmenování přibyly možnosti uložení nastavení a nástroje pro vytvoření souboru vizuálního přepisu.

Klient je také schopen nepřetržitě detekovat přerušená připojení a může je automaticky znovu připojit při bootování. Mezi další nové funkce patří podpora nových typů proxy serverů, automatické nahrazování zakázaných znaků v názvech předplatného a konfigurace nových připojení v dialogovém okně Předvolby.

Dobře vyvinutá metodologie pro analýzu a popis psacích systémů umožnila konsorciu Unicode v poslední době přejít ke kódování zbytku pozemských písem, která jsou zajímavá: jedná se o písma mrtvých jazyků, čínské hieroglyfy, které přestaly být používány v moderní době. , uměle vytvořené abecedy atd. K reprezentaci všeho toto bohatství 16bitového kódování již nestačí a Unicode dnes používá 21bitový kódový prostor (000000 - 10FFFF), který je rozdělen do 16 zón zvaných roviny. Plány Unicode zatím zahrnují následující roviny:

S možnostmi provedenými v dřívějších verzích se původní konfigurační dialog stal nejasným. Nový konfigurační dialog je rozdělen do čitelnějších kategorií, přičemž každá sekce je věnována samostatná stránka dialog. Najdete většinu parametrů známých z předchozí verze a mnoho nových možností.

Jedná se o kódování znaků světové třídy. Naprostá většina speciálních znaků všech jazyků na světě je již na svém místě. Kouzla "regulárních výrazů" - mnoho lidí se bojí. Nezbývá mu, než sledovat jeho oficiální představení. Dvoubajtový znak je vícejazyčný dvoubajtový znakový kód. Většina symbolů používaných při používání počítačů po celém světě, včetně technických symbolů a Speciální symboly, může být reprezentován jako znaky Unicode jako dvoubajtový znak.

    Rovina 0 (kódy 000000 - 00FFFF) - BMP, Basic Multilingual Plane (BMP, Basic Multilingual Plane), odpovídá původní řadě Unicode.

    Rovina 1 (kódy 010000 - 01FFFF) - DMP, Supplementary Multilingual Plane (SMP), určená pro mrtvé skripty.

    Rovina 2 (kódy 020000 - 02FFFF) - DIP, další hieroglyfická rovina (SIP, doplňková ideografická rovina), určená pro hieroglyfy, které nebyly zahrnuty do BMP.

    Protože každý dvoubajtový znak je reprezentován pevnou 16bitovou velikostí, šířka znaku zjednodušuje programování pomocí mezinárodních znakových sad. Šířky znaků obvykle zabírají více místa v paměti než vícebajtové znaky, ale jejich zpracování je rychlejší.

    Pokud je to běžný řetězec, řekne, pokud je to řetězec Unicode, řekne. Za prvé, okno terminálu je obvykle nakonfigurováno tak, aby zobrazovalo znaky pouze z omezené množiny jazyků. Pokud zadáte příkaz k tisku na řetězec unicode, nemusí se v okně terminálu zobrazit správně. Zde musí být každý znak Unicode zakódován jako jeden nebo více "bajtů" pro uložení do souboru.

    Plane 14 (kódy 0E0000 - 0EFFFF) je dřevotříska, přídavná speciální rovina (SSP, Supplementary Special-purpose Plane), určená pro speciální znaky.

    Rovina 15 (kódy 0F0000 - 0FFFFF) - Rovina pro soukromé použití, určená pro symboly umělého písma.

    Rovina 16 (kódy 100000 - 10FFFF) - Rovina pro soukromé použití, určená pro symboly umělého písma.

    Dosud jsme se vyhýbali nízkoúrovňovému kódování dat, ale pokud budete trochu rozumět bitům a bajtem, pomůže vám to zjistit. Toto je jediná hodnota, omezená dvěma možnostmi, které běžně zapisujeme jako 0, nebo počítače ukládají bity jako elektrické náboje nebo magnetické polarity nebo nějakým jiným způsobem, kterým se nemusíme obtěžovat. Sekvence osmi bitů 0-1 se nazývá byte.

    Existuje mnoho možných kódování. Jeden znak Unicode je mapován na sekvenci až čtyř bajtů. Můžete to udělat jedním ze dvou způsobů. Vše bude fungovat dobře, dokud se nepokusíte obsah vytisknout nebo zapsat do souboru. Pokud píšete a okno terminálu není nakonfigurováno tak, aby zobrazovalo tento jazyk, můžete doručovat podivný výstup.

Rozdělení BMP do bloků je uvedeno ve WDH: Unicode Standard. Zde pouze poznamenáváme, že prvních 128 kódů (00000 - 0007F) odpovídá kódům ASCII a kóduje základní latinský blok. Rozložení skriptů pro řadu Unicode bude podrobně popsáno v mém článku "Unicode a skripty světa." Protože nás v budoucnu budou zajímat pouze symboly BMP, používám jejich 16bitové kódy ve tvaru XXXX (nejvýznamnější bity jsou rovny nule a nejsou uvedeny).

Pokud se pokusíte zapsat do souboru, může se zobrazit chybová zpráva. To vám umožní psát v jednom dokumentu, například ve smyčce a polské abecedě. Toto je zdaleka nejuniverzálnější standard. Všechny samozřejmě používají stejné pole a mají stejné možnosti, rozdíl je pouze v jiném způsobu zápisu. Největší přenositelností jsou vaše dokumenty Unicode. Každý parser to musí podporovat. Na jeden standard nemáte záruky.

Pokud toto použijete, nepotřebujete žádné informace o kódování. Některé informace o programech, které vám mohou pomoci s kódováním a převodem znaků, naleznete v části „Nástroje“. Tento výukový program pouze ukazuje kroky, které musíte provést, abyste přidali písmo, které má velká i malá písmena a diakritiku, které jsou specifické pro rumunský jazyk. Psaní bez diakritiky může vést k nejednoznačným výrazům jako „12letý tank“, „román zrozený v Římě“.

obecný popis

Unicode je založen na konceptu znaku. Symbol je abstraktní pojem, který existuje ve specifickém systému písma a je realizován prostřednictvím svých obrazů (grafémů). To znamená, že každý znak je dán unikátní kód a patří do specifického bloku Unicode. Například existuje grafém A v anglické, ruské a řecké abecedě. V Unicode však odpovídá třem různým znakům „latinské velké písmeno A“ (kód 0041), „velké azbukové písmeno A“ (kód 0410) a „řecké velké písmeno ALPHA“ (kód 0391). Pokud nyní na tyto znaky použijeme převod na malé písmeno, dostaneme „malé latinské písmeno A“ (kód 0061, grafém a), „malé azbukové písmeno A“ (kód 0430, grafém a) ​​a „řecké malé písmeno ALPHA“ (kód 03B1, grafém α), tedy různé grafémy.

Diakritika je klobouk - k tomu - obálka, čárka a čárka - jazyk pro Rumuny. Je navrženo pro jakékoli písmeno v jakémkoli jazyce, na jakékoli hardwarové nebo softwarové platformě, aby odpovídalo jeho jedinečnému a jednoznačnému číslu. Nyní bude mít tvar a velikost glyfu.

Zvolíme čárkovou grafiku. Červený obrys glyfu znamená, že je vybrán. Pro další rumunská diakritická písmena jsou provedeny stejné úpravy. Zobrazí se dialogové okno Informace o písmu. Do pole Příjmení přidáme jméno, jaké jméno pro písmo chceme.

Může vyvstat otázka: jaký je převod na malé písmeno? Zde se dostáváme k nejzajímavějšímu a nejdůležitějšímu bodu standardu. Jde o to, že Unicode není snadné tabulka kódů... Koncept abstraktního symbolu umožnil tvůrcům Unicode vybudovat databázi znaků, ve které je každý znak popsán svým jedinečným kódem (databázovým klíčem), celým jménem a sadou vlastností. Například symbol s kódem 0410 je v této databázi popsán takto:

0410; VELKÉ PÍSMENO CYRILICE A; Lu; 0; L ;;;;; N ;;;; 0430;

Pojďme dešifrovat tento záznam. To znamená, že kód 0410 je přiřazen k „azbuce velké písmenoА "(úplný název symbolu), který má následující vlastnosti:

Obecná kategoriemalé písmeno (Lu = písmeno, velké písmeno)
Kombinovaná třída0
Směr výstupuzleva doprava (L)
Rozklad symbolůNe
Desetinná čísliceNe
ČísloNe
Číselná hodnotaNe
Zrcadlový symbolchybí (N)
Celé jméno v Unicode 1.0taky
KomentářNe
Mapování velkými písmenyNe
Zobrazení na malá písmena0430
Mapování na titulní písmenoNe

Uvedené vlastnosti jsou definovány pro každý znak Unicode. To umožnilo jeho vývojářům vytvořit standardní algoritmy, které na základě vlastností symbolů určují pravidla pro jejich vykreslování, řazení a převod na velká/malá písmena.

V souhrnu můžeme říci, že standard Unicode se skládá ze tří vzájemně souvisejících částí:

    databáze symbolů;

    báze grafémů (glyfů), které určují vizuální reprezentaci těchto symbolů;

    sada algoritmů, které určují pravidla pro práci se symboly.

Na závěr této části uvádíme grafémy bloku azbuky (kódy 0400 - 04FF). Upozorňujeme, že zahrnuje nejen písmena moderní azbuky (ruské, ukrajinské, běloruské, bulharské, srbské, makedonské atd.), ale také všechna písmena původní cyrilice používané v církevně slovanském písmu.

Transformační formáty

Jak jsme viděli, každý znak Unicode má jedinečný 21bitový kódový bod. Pro praktickou implementaci je však takové kódování znaků nepohodlné. Faktem je, že operační systémy a síťových protokolů tradičně zacházejí s daty jako s proudy bajtů. To vede minimálně ke dvěma problémům:

    Pořadí bajtů ve slově se u různých procesorů liší. procesory Intel, DEC a další ukládají svůj nejvýznamnější bajt do prvního bajtu strojového slova, zatímco procesory Motorola, Sparc a další ukládají jeho nejméně významný bajt. Oni jsou příslušně nazýváni little-endian a big-endian (tyto termíny pocházejí ze Swiftových "hrotů" a "bluntů", dohadujících se o tom, ze kterého konce rozbít vejce).

    Mnoho systémů a protokolů orientovaných na bajty povoluje jako data pouze bajty z určitého rozsahu. Zbytek bajtů je považován za režii; zejména je obvyklé používat jako znak konce řádku nulový bajt. Protože Unicode kóduje znaky v řadě, přímý přenos jeho kódů jako bajtových řetězců může být v rozporu s pravidly protokolu přenosu dat.

K překonání těchto problémů standard obsahuje tři transformační formáty UTF-8, UTF-16 a UTF-32, které definují pravidla pro kódování znaků Unicode jako bajtové řetězce, 16bitové páry slov a 32bitová slova. Volba použitého formátu závisí na architektuře výpočetního systému a standardech ukládání a přenosu dat. Stručný popis transformačních formátů lze nalézt ve WDH: Unicode Standard.

Problémy s implementací

Myslím, že i z výše uvedeného stručný popis Standard Unicode je jasné, že má plnou podporu majora operační systémy bude znamenat revoluci ve zpracování textu. Uživatel sedící u libovolného webového terminálu si bude moci vybrat libovolné rozložení klávesnice, napsat text v jakémkoli jazyce a přenést jej do libovolného počítače, který bude tento text zobrazovat správně. Databáze budou moci ukládat, správně třídit a zobrazovat v sestavách textové informace opět v jakémkoli jazyce. Aby tento ráj mohl přijít, je nutných pět věcí:

    Operační systémy musí podporovat transformační formáty Unicode na úrovni zadávání, ukládání a zobrazování textových řetězců.

    Potřebujeme ovladače chytré klávesnice, které nám umožní zadávat znaky do libovolného bloku Unicode a předávat jim kódy do operačního systému.

    Textové editory by měly podporovat zobrazování všech znaků Unicode a provádět s nimi běžnou sadu znakových operací.

    Totéž musí správně provést DBMS pro textová a memo pole.

    Protože národní kódování bude koexistovat s Unicode po dlouhou dobu, je nutné podporovat textové transformace mezi nimi.

Bohužel musíme přiznat, že za deset let (Unicode 1.0 se objevil v roce 1991) se v tomto směru udělalo mnohem méně, než bychom si přáli. I Windows, který obsahuje nejkonzistentnější podporu Unicode na systémové úrovni, je plný zcela iracionálních omezení jen díky svému historickému vývoji. Na Unixu je situace ještě horší, protože podpora Unicode byla přenesena z jádra do konkrétních aplikací. Unicode je dnes pravděpodobně nejvíce podporováno ve dvou prostředích: webové prohlížeče a virtuální stroje Java. To není překvapivé, protože obě prostředí byla původně navržena jako nezávislá na systému.

Je třeba také poznamenat objektivní potíže s podporou Unicode. Zaměříme se například pouze na zobrazení grafémů, pro které je potřeba do systému nainstalovat příslušné fonty. Problém je v tom, že font obsahující všechny grafémy Unicode bude mít naprosto nepohodlnou velikost. Například písmo TrueType Arial Unicode MS, které obsahuje velkou část znaků Unicode, „váží“ 24 MB. Jak se Unicode zaplňuje novými bloky, velikost takových písem se přiblíží 100 MB. Východiskem ze situace je navrhované načítání symbolů na vyžádání od společnosti Microsoft, které akceptuje jejich prohlížeč. internet Explorer... Nicméně, zatímco standardy o pravidlech pro tvorbu Unicode-fontů mlčí.

Způsoby, jak pracovat Unicode znaky a národní kódování v nejdůležitějších prostředích a programovacích systémech bude diskutováno v následujících článcích.

Žádná taková stránka neexistuje

Možná byla. Někdy. Před. Nebo jen v plánech. Ale teď je pryč.