Računalniki Windows internet

Standard kodiranja Unicode dodeli za vsak znak. Kaj je Unicode

Unicode je kodirni sistem, ki vsakemu znaku dodeli edinstveno kodo, ne glede na platformo, ne glede na program, ne glede na jezik.

Pravzaprav je tudi v samem naslovu te opombe nekaj netočnosti - ali bolje rečeno, protislovje. Dejstvo je, da še vedno ni soglasja o tem, kako pravilno črkovati angleško besedo Unicode z ruskimi črkami - Unicode ali Unicode. Zdaj bomo uporabili prvo možnost črkovanja.

Včasih, ko odprete dokumente ali si ogledate strani namesto poljskih črk, je več "grmov". Te napake lahko povzroči napačno kodiranje znakov. Besedilo, ki ga vidite na zaslonu, računalnik shrani v obliki ničel in enic, ki so zapakirane v osem delov. Ena nič ali en bit; Skupina osmih je bajt. Elektronske naprave hranijo informacije v bajtih, vključno z besedilom.

V redu, toda kako lahko vsi ti deli računalnika naredijo zgodovino? Deset bo izgledalo takole: na tak način za pisanje številk imenujemo binarno, naučili smo se uporabljati decimalna števila. To se naredi tako, da je vsakemu znaku dodeljena številka. Stavek "Alla ima mačko" je niz številk.

Unicode ni le večbajtno kodiranje za predstavitev številnih znakov, kot mnogi mislijo, čeprav se lahko takšna definicija do določene mere šteje za pravilno. Uradno je definicija naslednja: Unicode je kodirni sistem, ki vsakemu znaku dodeli edinstveno kodo, ne glede na platformo, ne glede na program, ne glede na jezik.

Upoštevajte, da so velike in male črke ločen znak za računalnik, presledek pa je tudi znak, čeprav ni viden. Poleg tega se posamezne števke obravnavajo na enak način. Na primer, znaku 1 ni dodeljena samo številka 1.

Ne, kje pa računalnik ve, kateri znak je dodeljen to številko? Odgovor je kodiranje znakov. Na splošno je tabela z vsemi simboli in številkami, ki so jim dodeljeni. Sčasoma ta številka ni več dovolj - računalniki so pridobili nove zmogljivosti in postali bolj priljubljeni v drugih državah s posebnimi črkami.

Standard Unicode je razdeljen na dva dela. Prvi je niz številk, ki ustrezajo vsakemu znaku v vsaki podprti abecedi. Imenuje se univerzalni nabor znakov ali samo UCS. Vsa števila, uporabljena v kodnem prostoru UCS, so cela števila in nenegativna. Te številke - kodne pozicije - so označene kot U + 0000, U + 0001, U + 0002 itd. Ob vsem tem kodni prostor ni homogen, ampak je razdeljen na več pomenskih področij. Kode od U + 0000 do U + 007F so znaki ASCII, ki jim sledijo znaki iz različnih nacionalnih abeced, ločila in tehnični znaki, kot je vrnitev v novo vrstico. Drugi del standarda so pravzaprav kodiranja, ki zagotavljajo bitno predstavitev vsake kode v besedilu.

Čeprav imata oba več kot dvesto petdeset znakov, ta številka še vedno ne zadošča za delovanje v vseh jezikih, zato ima vsaka jezikovna družina svojo različico teh kodiranja. Temu pravimo kodna stran. Vsi so imeli enak izvor, zato so vključevali ločila, velike in male angleške črke ter številke. Vendar so se ostali znaki razlikovali od različice do kode.

A tudi uvedba kodnih strani ni rešila vseh težav. Prva je interoperabilnost standardov. Čeprav je prvih 127 znakov enakih za vse standarde, so ostali znaki razvrščeni glede na njihovo lastno predstavitev. Besedni kot, napisan v tem prvem kotu, se bo odprl po odprtju sistema za drugi standard.

Vsi znaki Unicode so razdeljeni na dve vrsti - razširjeni in brez širine (spreminjajoče). Razširjeni znaki so običajne črke, s katerimi je vtipkana ta opomba. Spremenilni so znaki nad črkami, kot so poudarki, pike, "kapice" itd. itd. Večina črk s podobnimi znaki za vse abecede je predstavljena kot zaporedje razširjenih in spreminjajočih se simbolov. Res je, da sta cirilični "e" in "y" predstavljeni kot ločena razširjena znaka.

Druga težava je, da 256 znakov še vedno ni dovolj za tekoče pisanje dokumentov. V večini primerov je to dovolj, težave pa nastanejo, ko se morate za magistrsko nalogo obrniti na g. Möllerja, Pütza ali Strassmanna. Vstavite cirilico ali vnesite grške črke v zapleteno matematično formulo.

Potrebna je nova metoda kodiranja, ki bo vključevala vse možne znake, ki se uporabljajo v vseh jezikih sveta. Zaradi tega so napake manj pogoste. Vendar se je pojavila še ena težava - toliko možnih znakov ni omogočalo zapisovanja 1 bajta zanje. En bajt je sestavljen iz osmih ali ničel, kar omogoča njihovo organiziranje na različne načine. Toliko znakov ima kodnih strani. Če želite povečati število znakov, ki jih podpira sistem kodiranja, morate povečati število bajtov, potrebnih za vstavljanje črke.

Najpogostejša praktična izvedba Unicode je UTF-8. Ta standard zagotavlja dobro združljivost s starimi besedili ASCII zaradi dejstva, da so znaki angleške abecede in drugi običajni znaki (tj. znaki s kodami ASCII od 0 do 127) zapisani v enem bajtu. Preostali znaki so napisani v velikem številu bajtov - od dva do šest.

Pred kratkim je bil znaku Unicode dodan znak turške lire. Številka, ki ji je dodeljena, je 110. Če bi vsako črko zasedli 3 bajti, bi tudi tisti od začetka z enim povečali prostor, potreben za shranjevanje datoteke na disk.

Razvijalci so prišli na idejo, da znaki ne smejo imeti konstantnega števila bajtov. In za to, da bi lahko delali na računalniku, ustrezajo kodiranju. Spremenite kodiranje znakov v vsakem od teh treh in preverite, ali so prikazane vse črke. Če morate svojo stran kodirati na ta način, prenesite brezplačno in zmogljivejšo beležnico.

Unicode in sorodne standarde razvija konzorcij Unicode. Kot je zapisano na uradni spletni strani te organizacije, www.unicode.org, "Konzorcij Unicode je neprofitna organizacija, ustanovljena za razvoj in razvoj standarda Unicode, ki opredeljuje predstavitev besedilnih informacij v sodobnih programskih izdelkih in standardih, in spodbujati njegovo širšo širjenje in uporabo Člani Konzorcij je veliko število korporacij in organizacij, ki delujejo na področju obdelave informacij in računalniške industrije Finančna podpora konzorcija se izvaja izključno s članarino njegovih članov Članstvo v konzorcij Unicode je odprt za vsako organizacijo ali posameznika, ki podpira standard Unicode in želi pomagati pri njegovem širjenju in izvajanju. Pridruži se nam! :)

Opis v tem članku temelji na različici Beta 8, ki je na voljo le majhnemu krogu beta testerjev. Ker se beta testiranje bliža koncu, je zelo verjetno, da se bo večina opisanih funkcij in funkcionalnosti dejansko pojavila v končni izdaji. V vsakem od tematskih blokov bomo pokrivali najpomembnejše spremembe in novosti v zvezi s trenutno različico 51.

Delo z datotekami in videz aplikacije

Nova šesta različica v tej organizaciji delovnega prostora ne spreminja ničesar, bistveno pa razširi zmogljivosti teh dveh oken. Če vprašate, kako, so odgovori "zaznamovani". Vsako okno lahko zdaj hitro preklaplja med katero koli mapo, ki jo definiramo. Ustvarite lahko poljubno število zaznamkov in lahko hitro preklapljate med različnimi mapami v enem oknu. Lahko nadaljujete z delom z zaznamki. Vsak od zavihkov se obnaša kot ločena plošča z datotekami, tako da lahko z njim delamo na star način.

Standard Unicode ali ISO / IEC 10646 je rezultat sodelovanja med Mednarodno organizacijo za standardizacijo (ISO) in vodilnimi proizvajalci računalnikov in programsko opremo... Razlogi, navedeni na prejšnji strani, so jih pripeljali do bistveno nove formulacije vprašanja: zakaj bi si prizadevali za razvoj ločenih kodnih tabel, če je mogoče ustvariti enotno tabelo za vse nacionalne jezike? Takšna naloga se zdi preveč ambiciozna, a le na prvi pogled. Dejstvo je, da je od 6700 živih jezikov približno petdeset uradnih jezikov držav in uporabljajo približno 25 različnih pisam: številke za našo računalniško dobo so precej predvidljive.

Zaznamki bodo prikazani le, če so v oknu po vsaj dve. Pri kopiranju velikih količin podatkov, ki trajajo dlje časa, se lahko v prejšnjih izdajah uporabljajo kopije v ozadju. Seveda je bila ta priljubljena funkcionalnost ohranjena in je v novi različici prinesla več novih izdaj.

Če jo izberete, boste videli razširjeno pogovorno okno za kopiranje v ozadju, kjer lahko ustavite kopiranje in nastavite največjo bitno hitrost, ki bo kopirana. Poleg tega lahko datoteke v to okno nenehno dodajate. Ta način "obvladuje" težave nekaterih uporabnikov, ki se med izvajanjem intenzivno spopadajo z več okni - lahko namestijo največja hitrost zaporedoma prenašajte in razvrščajte datoteke v čakalni vrsti, da znatno zmanjšate celotno obremenitev diska.

Preliminarna ocena je pokazala, da za kodiranje vseh teh skript zadostuje 16-bitni obseg, to je razpon od 0000 do FFFF. Vsaki skripti je bil v tem obsegu dodeljen svoj blok, ki se je postopoma polnil s kodami znakov tega skripta. Danes lahko štejemo, da je kodiranje vseh živih uradnih skript končano.

Zdaj lahko funkcija ustvarjanja map ustvari tudi strukturo imenikov. Dodatne izboljšave pri delu z datotekami. Sinhronizacija imenikov ima dve veliki izboljšavi. V glavnem modulu za preimenovanje so dodane možnosti za shranjevanje nastavitev in orodja za ustvarjanje vizualne prepisne datoteke.

Odjemalec lahko tudi neprekinjeno zazna prekinjene povezave in ga lahko samodejno znova poveže ob zagonu. Druge nove funkcije vključujejo podporo za nove vrste proxy strežnikov, samodejno zamenjavo prepovedanih znakov v imenih naročnin in konfiguracijo novih povezav v pogovornem oknu Nastavitve.

Dobro razvita metodologija za analizo in opis pisnih sistemov je omogočila konzorciju Unicode, da je pred kratkim prešel na kodiranje preostalih zemeljskih pisav, ki so zanimive: to so pisave mrtvih jezikov, kitajski hieroglifi, ki so izpadli iz sodobne uporabe. , umetno ustvarjene abecede itd. Za predstavitev vsega to bogastvo 16-bitnega kodiranja ni več dovolj in danes Unicode uporablja 21-bitni kodni prostor (000000 - 10FFFF), ki je razdeljen na 16 območij, imenovanih ravnine. Zaenkrat načrti Unicode vključujejo naslednje ravnine:

Z možnostmi v prejšnjih različicah je prvotno konfiguracijsko pogovorno okno postalo nejasno. Novo pogovorno okno za konfiguracijo je razdeljeno na bolj berljive kategorije, pri čemer je vsak razdelek namenjen ločena stran dialog. Našli boste večino parametrov, znanih iz prejšnja različica in veliko novih možnosti.

Gre za kodiranje znakov svetovnega razreda. Velika večina posebnih znakov v vseh jezikih sveta je že na mestu. Uroki "regularnih izrazov" - mnogi se bojijo. Vse kar mora storiti je, da si ogleda svoj uradni uvod. Dvobajtni znak je večjezična dvobajtna znakovna koda. Večina simbolov, ki se uporabljajo pri uporabi računalnikov po vsem svetu, vključno s tehničnimi simboli in Posebni simboli, je mogoče predstaviti kot znake Unicode kot dvobajtni znak.

    Ravnina 0 (kode 000000 - 00FFFF) - BMP, osnovna večjezična ravnina (BMP, osnovna večjezična ravnina), ustreza izvirnemu obsegu Unicode.

    Letalo 1 (kode 010000 - 01FFFF) - DMP, dopolnilna večjezična ravnina (SMP), namenjena mrtvim skriptom.

    Ravnina 2 (kode 020000 - 02FFFF) - DIP, dodatna hieroglifska ravnina (SIP, Supplementary Ideographic Plane), namenjena hieroglifom, ki niso bili vključeni v BMP.

    Ker je vsak dvobajtni znak predstavljen v fiksni 16-bitni velikosti, širina znakov poenostavlja programiranje z uporabo mednarodnih naborov znakov. Običajno širine znakov zavzamejo več pomnilnika kot večbajtni znaki, vendar jih je hitreje obdelati.

    Če je navaden niz, bo rekla, če je niz Unicode, bo rekla. Prvič, terminalsko okno je običajno konfigurirano za prikaz znakov samo iz omejenega nabora jezikov. Če izdate navodilo za tiskanje na nizu Unicode, se morda ne bo pravilno prikazalo v oknu terminala. Tukaj mora biti vsak znak Unicode kodiran kot en ali več "bajtov" za shranjevanje v datoteki.

    Letalo 14 (kode 0E0000 - 0EFFFF) je iverna plošča, dodatna posebna ravnina (SSP, Supplementary Special-purpose Plane), namenjena za posebne namene.

    Letalo 15 (kode 0F0000 - 0FFFFF) - Letalo za zasebno rabo, namenjeno simbolom umetne pisave.

    Letalo 16 (kode 100000 - 10FFFF) - Letalo za zasebno uporabo, namenjeno simbolom umetne pisave.

    Doslej smo se izogibali podatkom za kodiranje podatkov na nizki ravni, toda razumevanje bitov in bajtov vam bo pomagalo ugotoviti. To je edina vrednost, omejena z dvema možnostma, ki ju običajno zapišemo kot 0, ali pa računalniki shranijo bite kot električne naboje ali magnetne polaritete ali na kakšen drug način, s katerim se nam ni treba obremenjevati. Zaporedje osmih 0-1 bitov se imenuje bajt.

    Obstaja veliko možnih kodiranj. En znak Unicode je preslikan v zaporedje do štirih bajtov. To lahko storite na enega od dveh načinov. Vse bo delovalo v redu, dokler ne poskusite natisniti ali zapisati vsebine v datoteko. Če tipkate in terminalsko okno ni konfigurirano za prikaz tega jezika, morda dajete čuden rezultat.

Razčlenitev BMP na bloke je podana v WDH: standard Unicode. Tukaj le ugotavljamo, da prvih 128 kod (00000 - 0007F) ustreza kodam ASCII in kodira osnovni latinski blok. Postavitev skript za obseg Unicode bo podrobno opisana v mojem članku "Unicode in skripte sveta." Ker nas bodo v prihodnje zanimali le simboli BMP, uporabljam njihove 16-bitne kode v obliki XXXX (najpomembnejši bit so enaki nič in niso označeni).

Če poskusite pisati v datoteko, boste morda prejeli sporočilo o napaki. To vam omogoča pisanje v enem dokumentu, na primer v zanki in poljski abecedi. To je daleč najbolj vsestranski standard. Seveda vsi uporabljajo isto matriko in imajo enake zmogljivosti, razlika je le v drugačnem načinu pisanja. Največja prenosljivost so vaši dokumenti Unicode. Vsak razčlenjevalnik ga mora podpirati. Nimate garancij za en standard.

Če uporabljate to, ne potrebujete nobenih informacij o kodiranju. Nekaj ​​informacij o programih, ki vam lahko pomagajo kodirati in pretvarjati znake, najdete v razdelku »Orodja«. Ta vadnica prikazuje samo korake, ki jih morate upoštevati, da dodate pisavo, ki vsebuje velike in male črke ter diakritične znake, ki so značilni za romunski jezik. Pisanje brez diakritičnih znakov lahko vodi do dvoumnih izrazov, kot so "12-letni tank", "roman rojen v Rimu."

splošen opis

Unicode temelji na konceptu znaka. Simbol je abstrakten pojem, ki obstaja v določenem pisnem sistemu in se uresničuje skozi njegove podobe (grafeme). To pomeni, da je vsak znak podan edinstvena koda in pripada določenemu bloku Unicode. Na primer, obstaja grafem A v angleški, ruski in grški abecedi. Vendar v Unicode ustreza trem različnim znakom "latinska velika črka A" (koda 0041), "cirilična velika črka A" (koda 0410) in "grška velika črka ALPHA" (koda 0391). Če zdaj uporabimo pretvorbo v malo črko za te znake, bomo dobili "latinsko malo črko A" (koda 0061, grafem a), "cirilično malo črko A" (koda 0430, grafem a) in "grško malo črko" ALFA" (koda 03B1, grafem α), torej različni grafemi.

Diakritiki so klobuk - za to - ovojnica, vejica in vejica - jezik za Romune. Zasnovan je za katero koli črko v katerem koli jeziku, na kateri koli strojni ali programski platformi, da se ujema z njeno edinstveno in nedvoumno številko. Zdaj bo imel obliko in velikost glifa.

Izbrali bomo grafiko z vejico. Rdeč obris glifa pomeni, da je izbran. Za druge romunske diakritične črke so narejene enake prilagoditve. Prikaže se pogovorno okno Informacije o pisavi. V polje Priimek dodamo ime, katero ime želimo za pisavo.

Lahko se pojavi vprašanje: kaj je pretvorba v malo črko? Tukaj pridemo do najbolj zanimive in pomembne točke v standardu. Bistvo je, da Unicode ni enostaven kodna tabela... Koncept abstraktnega simbola je ustvarjalcem Unicode omogočil, da so zgradili zbirko znakov, v kateri je vsak znak opisan s svojo edinstveno kodo (ključ baze podatkov), polnim imenom in nizom lastnosti. Na primer, simbol s kodo 0410 je v tej bazi podatkov opisan na naslednji način:

0410; CIRIČNA VELIKA ČRKA A; Lu; 0; L ;;;;; N ;;;; 0430;

Dešifrirajmo ta vnos. To pomeni, da je šifra 0410 dodeljena "cirilici velika začetnica A "(polno ime simbola), ki ima naslednje lastnosti:

Splošna kategorijamala črka (Lu = črka, velika)
Kombinacijski razred0
Izhodna smerod leve proti desni (L)
Razpad simbolašt
Decimalna številkašt
Številkašt
Številčna vrednostšt
Simbol ogledalamanjka (N)
Polno ime v Unicode 1.0tudi
Komentaršt
Preslikava z velikimi črkamišt
Prikaz na male črke0430
Preslikava na naslovno črkošt

Naštete lastnosti so definirane za vsak znak Unicode. To je njegovim razvijalcem omogočilo ustvarjanje standardnih algoritmov, ki na podlagi lastnosti simbolov določajo pravila za njihovo upodabljanje, razvrščanje in pretvorbo v velike in male črke.

Če povzamemo, lahko rečemo, da je standard Unicode sestavljen iz treh medsebojno povezanih delov:

    baze podatkov simbolov;

    osnova grafemov (glifov), ki določajo vizualno predstavo teh simbolov;

    niz algoritmov, ki določajo pravila za delo s simboli.

V zaključku tega razdelka predstavljamo grafeme ciričnega bloka (kode 0400 - 04FF). Upoštevajte, da vključuje ne samo črke sodobne cirilice (ruske, ukrajinske, beloruske, bolgarske, srbske, makedonske itd.), ampak tudi vse črke izvirne cirilice, ki se uporablja v cerkvenoslovanski pisavi.

Formati transformacije

Kot smo videli, ima vsak znak Unicode edinstveno 21-bitno kodno točko. Vendar pa je za praktično izvajanje takšno kodiranje znakov neprijetno. Dejstvo je, da operacijski sistemi in omrežnih protokolov tradicionalno obravnavajo podatke kot tokove bajtov. To vodi do vsaj dveh težav:

    Vrstni red bajtov v besedi je pri različnih procesorjih drugačen. Intel procesorji, DEC in drugi shranijo svoj najpomembnejši bajt v prvi bajt strojne besede, medtem ko procesorji Motorola, Sparc in drugi shranijo najmanjši bajt. Imenujeta se torej little-endian in big-endian (ta izraza izhajata iz Swiftovih "spikes" in "blunts", ki se prepirata o tem, s katerega konca razbiti jajca).

    Številni bajtno usmerjeni sistemi in protokoli dovoljujejo samo bajte iz določenega obsega kot podatke. Preostali bajti se štejejo za nadzemne; zlasti je običajno, da se kot znak konca vrstice uporablja ničelni bajt. Ker Unicode kodira znake v vrstici, je lahko neposredni prenos njegovih kod kot nizov bajtov v nasprotju s pravili protokola za prenos podatkov.

Za premagovanje teh težav standard vključuje tri transformacijske formate UTF-8, UTF-16 in UTF-32, ki opredeljujejo pravila za kodiranje znakov Unicode kot bajtne nize, 16-bitne pare besed oziroma 32-bitne besede. Izbira formata za uporabo je odvisna od arhitekture računalniškega sistema ter standardov za shranjevanje in prenos podatkov. Kratek opis formatov transformacije je na voljo v WDH: Unicode Standard.

Težave pri izvajanju

Mislim, da tudi iz zgornjega Kratek opis Standard Unicode jasno je, da ima polno podporo major operacijski sistemi bo pomenilo revolucijo v obdelavi besedil. Uporabnik, ki sedi na katerem koli spletnem terminalu, bo lahko izbral poljubno postavitev tipkovnice, vtipkal besedilo v katerem koli jeziku in ga prenesel na kateri koli računalnik, ki bo to besedilo pravilno prikazal. Baze podatkov bodo lahko shranjevale, pravilno razvrščale in prikazovale v poročilih besedilne informacije spet v katerem koli jeziku. Da bi prišel ta raj, je potrebnih pet stvari:

    Operacijski sistemi morajo podpirati formate preoblikovanja Unicode na ravni vnosa, shranjevanja in prikaza besedilnih nizov.

    Potrebujemo gonilnike pametne tipkovnice, ki nam omogočajo, da vnesemo znake v kateri koli blok Unicode in jih posredujemo operacijskemu sistemu.

    Urejevalniki besedil bi morali podpirati prikaz vseh znakov Unicode in na njih izvajati skupen nabor znakovnih operacij.

    Enako mora pravilno narediti DBMS za besedilna in beležka polja.

    Ker bodo nacionalna kodiranja dolgo obstajala z Unicode, je treba med njimi podpirati pretvorbo besedila.

Žal moramo priznati, da je bilo v desetih letih (Unicode 1.0 se je pojavil leta 1991) v tej smeri narejenega veliko manj, kot bi si želeli. Tudi Windows, ki vsebuje najbolj dosledno podporo za Unicode na sistemski ravni, je poln povsem neracionalnih omejitev le zaradi svojega zgodovinskega razvoja. Pri Unixu je situacija še slabša, saj je bila podpora za Unicode prenesena iz jedra v določene aplikacije. Verjetno je Unicode danes najbolj podprt v dveh okoljih: spletnih brskalnikih in navideznih strojih Java. To ni presenetljivo, saj sta bili obe okolji prvotno zasnovani kot sistemsko neodvisni.

Opozoriti je treba tudi na objektivne težave pri podpori Unicode. Osredotočili se bomo na primer le na prikaz grafemov, za kar morate v sistem namestiti ustrezne pisave. Težava je v tem, da bo imela pisava, ki vsebuje vse grafeme Unicode, popolnoma nerodno velikost. Na primer, pisava TrueType Arial Unicode MS, ki vsebuje velik del znakov Unicode, "tehta" 24 MB. Ko se Unicode polni z novimi bloki, se bo velikost takšnih pisav približala 100 MB. Izhod iz situacije je Microsoftovo predlagano nalaganje simbolov na zahtevo, sprejeto v njihovem brskalniku. internet Explorer... Vendar pa standardi o pravilih za oblikovanje pisav Unicode molčijo.

Načini dela z Znaki Unicode in nacionalna kodiranja v najpomembnejših okoljih in programskih sistemih bodo obravnavana v naslednjih člankih.

Te strani ni

Morda je bila. Nekega dne. Prej. Ali pa samo v načrtih. Ampak zdaj je ni več.