- Unicode määrab igale tähemärgile unikaalse koodipunkti ja sünkroniseerib selle repertuaari standardiga ISO/IEC 10646.
- UTF-8, UTF-16 ja UTF-32 kodeerivad samu märke ja võimaldavad kadudeta teisendamist.
- Normaliseerimine, kahesuunaline kuvasus ja universaalne CD-atribuudid tagavad järjepideva võrdlemise, järjestuse ja renderdamise.
- Unicode'i (veebis eelistatavalt UTF-8) kasutuselevõtt hoiab ära korruptsiooni ja hõlbustab rahvusvahelistumist.
Unicode on arvutite tekstitöötluskeel : see määrab igale tähemärgile ja sümbolile unikaalse numbri peaaegu igast kirjutamissüsteemist, et seda saaks sujuvalt salvestada, töödelda ja jagada platvormide ja riikide vahel.
See standard loodi vanade märgistike ( ASCII , koodilehed, EBCDIC jne) piirangute ületamiseks, mis olid ebapiisavad või omavahel ühildumatud, ning tänapäeval on see sünkroniseeritud standardiga ISO/IEC 10646, haldab algoritme (näiteks kahesuunalist) ning määratleb omadused ja normaliseerimisreeglid, et kõik toimiks järjepidevalt.
Mis on Unicode ja miks see nii oluline on?
Unicode on universaalne ja pidevalt arenev märgikodeeringu standard , mis kirjeldab iga märki nime, koodipunkti ja omaduste komplektiga (skript, kategooria, suund, suur- ja väiketäht jne). Unicode'i konsortsiumi Unicode'i tehniline komitee (UTC) hoiab seda standardiga ISO/IEC 10646 kooskõlas.
Selle eesmärk on universaalsus, ühtsus ja ainulaadsus : lai repertuaar, mis võimaldab mitmekeelse teksti üheselt mõistetavat vahetamist selgete ja reprodutseeritavate reeglite abil. Tänu sellele saavad tänapäevased tehnoloogiad (operatsioonisüsteemid, brauserid, XML, Java, andmebaasid) samas dokumendis segada ladina ja araabia tähti, hiina ja iiri kirjakeeli ideogramme, emotikone ning tehnilisi või muusikalisi sümboleid.
Tähemärgid, glüüfid ja koodipunktid
Unicode'is on märk abstraktne teabeühik ja koodipunkt on selle numbriline identifikaator . Glüüf on visuaalne vorm (see, mida näete ekraanil), mis sõltub fondist . Ühel märgil võib olla mitu glüfi ja mõnikord tähistab glüf rohkem kui ühte märki.
Koodipunkti tavapärane tähistus on kuueteistkümnendsüsteemis U+XXXX . Illustreerivad näited analüüsitud materjalist: väiketäht 'l' on U+006C, eelnevalt moodustatud väiketäht 'ü' on U+00FC, 'é' on U+00E9 ja kreeka beeta: suurtäht on U+0392 ja väiketäht U+03B2 (mõnes tekstis on 'β' viidatud koos U+0392-ga, kuid see kood vastab suurtähele 'Β').
Unicode'i koodiruumis on 1 114 112 võimalikku positsiooni (kuni U+10FFFF) , mis on korraldatud nii, et need hõlmaksid ja klassifitseeriksid kõiki kirjasüsteeme ja sümboleid, kusjuures igas versioonis on kümneid tuhandeid efektiivseid ja pidevalt arenevaid määramisi.
Plaanid, alad ja kvartalid
Unicode jagab oma märgiruumi 17 tasapinnaks, millest igaühes on kuni 65 536 koodipunkti . See korraldus lihtsustab seotud skriptide ja sümbolite rühmitamist ning kiiret otsitava leidmist.
Kõige olulisemad tasandid : põhiline mitmekeelne tasand (BMP, tasand 0) koondab peaaegu kõik tänapäevased tähestikud ja paljud sümbolid; täiendav mitmekeelne tasand (SMP, tasand 1) talletab ajaloolisi kirju ja tehnilisi sümboleid (nt muusikalisi ja matemaatilisi); täiendav ideograafiline tasand (SIP, tasand 2) laiendab hiina ja itaalia keele ideogramme; tasand 14 (SSP) sisaldab spetsiaalseid silte; ning tasandid 15 ja 16 on mõeldud isiklikuks kasutamiseks.
Plokid ja alad : kaardid on mitteametlikult jagatud aladeks ja formaalselt külgnevateks plokkideks. Plokke kasutatakse märkide tabelisse kandmiseks ja dokumenteerimiseks, kuigi need ei vasta alati tähendusrikastele keelelistele rühmitustele.
CJK ideogrammid ja Unihani projekt
Ida-Aasia (hani) ideogrammid on Unicode'is ühtsed, stilistiliselt on piirkonniti erinevaid , kuid kõik viitavad samale abstraktsele märgile. Nende haldamisega tegeleb ideograafiline raportöörgrupp (IRG), mis on ISO/IEC JTC1/SC2/WG2 rühm, kuhu kuuluvad Hiina, Jaapan, Korea, Vietnam, Hongkong, Macau, Singapur, USA ja teised riigid.
Unihani andmebaas koondab abiteavet (näited, tähendused, samaväärsused), mis on oluline nende ideogrammide käsitlemiseks erinevates keeltes ja ajaloolistes või ettevõtte standardites.
Peamised CJK plokid ja laiendused :
- CJK ühendatud ideograafiad (BMP, U+4E00–U+9FFF)20.992 XNUMX tavaliselt kasutatavat tähemärki.
- Laiendus A (BMP, U+3400–U+4DBF)6.592 harvemini esinevat ideogrammi.
- B–H laiendusedSMP/SIP/TIP puhul on neid kokku kümneid tuhandeid rohkem (B: U+20000–U+2A6DF, 42.720 2; C: U+700A2–U+73B4.154F, 2; D: U+740B2–U+81B222F, 2; E: U+820B2–U+5.762CEAF, 2; F: U+0CEB2–U+7.473EBEF, 30000; G: U+3134–U+4.939F, 31350;
- Muud seotud CJK plokidKangxi radikaalid (U+2F00–U+2FDF), CJK sümbolid ja kirjavahemärgid (U+3000–U+303F), ühilduvus ja ühilduvusvormingud, ühilduvuse ideogrammi lisa jne.
Unicode eeldab, et ideogrammide lisamine ei ole absoluutselt lõppenud ja kaalub selliseid mehhanisme nagu ideograafilised kirjeldusjärjestused, et esitada kodeerimata sümboleid, jagades need olemasolevateks komponentideks (ettevaatusabinõudega: ilma kanoonilise lagundamise või garantiideta sellistes toimingutes nagu otsimine või järjestamine).
Kodeerimisvormid: UTF-8, UTF-16 ja UTF-32
Unicode defineerib teisendusvorme (UTF), mis teisendavad koodipunktid salvestusühikuteks, et tarkvara saaks teksti konteksti järgi tõhusalt töödelda.
UTF-8 on muutuva pikkusega, baitipõhine kodeerimisvorming, mis on ASCII-ühilduv vahemikus U+0000–U+007F ühes baidis. Praegune standard kasutab 1 kuni 4 baiti tähemärgi kohta; mõned vanemad tekstid mainivad 1–6, kuid tänapäevases Unicode'is on see 1–4. See on veebis domineeriv vorming.
UTF-16 kasutab 16-bitiseid ühikuid
(üks või kaks koodiühikut tähemärgi kohta) : enamik BMP märke mahub ühte ühikusse; täiendavad märgid kasutavad asenduspaare vahemikus U+D800–U+DFFF.
UTF-32 on fikseeritud pikkusega: 4 baiti tähemärgi kohta, lihtne, aga ruumimahukas; kasulik, kui otsene märkide indekseerimine on oluline ja mälu pole probleemiks.
Kuidas bitte UTF-8-s jaotatakse
UTF-8 formaat jaotab koodipunkti bitid 1–4-baidisteks jadadeks , millel on äratuntavad päised, mis väldib ebaselgust ja hõlbustab märgipiiride tuvastamist.
| Unicode'i vahemik | Bitimuster | Bytes |
|---|---|---|
| U+0000..U+007F | 0xxxxxxxx | 1 |
| U+0080..U+07FF | 110yyyyy 10xxxxxx | 2 |
| U+0800..U+FFFF | 1110zzzz 10yyyyyy 10xxxxxx | 3 |
| U+010000..U+10FFFF | 11110uuu 10uuuzzzz 10yyyyyy 10xxxxxx | 4 |
UTF-8 peamine eelis on see, et see väldib baitide järjekorra (endiansuse) probleeme ja võimaldab tekstivoogude ülitõhusat töötlemist, lisaks on see tagasiühilduv ASCII-ga.
Kodeerimisskeemid, lõpupärasus ja BOM
Lisaks UTF-vormidele kirjeldab Unicode serialiseerimisskeeme, mis lahendavad, kuidas baite edastatakse erineva lõpuga süsteemide vahel ja kuidas selliseid aspekte nagu baitide järjekord signaalitakse.
- UTF-8: lõpupärasus ei kehti. Seda saab kanda Baitide järjekorra märk (BOM) vihjeks, kuigi see pole vaikimisi nõutav ega soovitatav.
- UTF-16BE/LE (big/little-endian) variandid ja valikuline BOM (kui puudub ja protokolliga defineerimata, eeldatakse big-endiani).
- UTF-32BE/LE variandid analoogsete reeglitega; BOM on lubatud tellimismärgina.
Lisaks GB18030-le (hiina keeles UTF-8 vaste, mis toetab lihtsustatud ja traditsioonilist hiina keelt) on olemas ka spetsiifilised variandid , näiteks UTF-16BE/UTF-16LE ja UTF-32BE/UTF-32LE (kokkuleppeliselt ilma BOM-ita) ning muud ajalooliselt ühilduvad kodeeringud, näiteks UTF-7 või UTF-EBCDIC.
Normaliseerimine, kompositsioon ja ekvivalentsused
Paljusid märke saab esitada eelnevalt moodustatud kujul või alus- ja liitmärkide jadadena . Klassikalised näited läbivaadatud materjalist: eelnevalt moodustatud 'Ä' on U+00C4, samas kui dekompositsioonvorm on 'A' (U+0041) + diaerees (U+0308). Vietnami 'ỗ' saab esitada kui 'o' (U+006F) + tsirkumfleks (U+0302) + tilde (U+0303).
Unicode defineerib standardiseeritud vorme ja kahte tüüpi ekvivalentsust : kanoonilise (sama põhisisu) ja ühilduvuse (vormid, mis võivad tunduda samad, kuid millel on semantilised erinevused). Standardiseerimine tagab usaldusväärse stringide võrdluse ja vähendab dubleerimist.
Kahesuunaline algoritm ja erimärgid
Paremalt vasakule kirjutatavate kirjastiilide, näiteks araabia või heebrea keele puhul sisaldab Unicode standardiseeritud ja pidevalt arenevat kahesuunalist algoritmi (Bidi) (nt versioonis 6.3), nii et ladina ja araabia kirjasüsteemiga segatekstid kuvatakse õiges visuaalses järjekorras.
Koodipunktide klassid, mis peaksid vastavalt saadud materjalile olema teada: graafilised märgid (tähed, märgid, sümbolid), vormindus (nähtamatud märgid, mis mõjutavad töötlemist: U+2028 reavahetus, U+2029 lõiguvahetus, U+00A0 tühik), päritud juhtkoodid ühilduvuse tagamiseks (vahemikud U+0000–U+001F, U+007F, U+0080–U+009F), privaatne kasutamine, reserveeritud positsioonid, asendajad (U+D800–U+DFFF UTF-16 jaoks) ja mittemärgid (U+FFFE, U+FFFF igal tasandil).
Unicode, ISO/IEC 10646 ja muud standardid (ASCII, ANSI, koodilehed)
Unicode on sünkroniseeritud standardiga ISO/IEC 10646 (UCS) ja säilitab vastavused varasematele standarditele (ASCII, ISO 8859-1, ANSI Z39.64, JIS X 0208, KS X 1001, GB 2312, GB 18030, HKSCS, CNS 11643 jne), lisaks on tootjate isiklikuks kasutamiseks reserveeritud ruumid.
ASCII vs. Unicode : ASCII on 7-bitine märgistik , mis koosneb 128 tähemärgist ja on piisav inglise keele põhioskuste jaoks, kuid ebapiisav diakriitikute, ideogrammide või emotikonidega keelte jaoks . Unicode hõlmab üle 140 000 tähemärgi ja see arv kasvab pidevalt, kasutades 8/16/32-bitist kodeeringut vastavalt UTF-12 vormingule.
ANSI ja koodilehed : „ANSI” viitab tavaliselt piiratud ja vastastikku ühildumatutele 8-bitistele Windowsi koodilehtedele. Arvuti, mis käitab OEM-Latin II koodisüsteemi ja avab teksti IBM EBCDIC-kirillitsa tähestikus, näeb valesid märke. Unicode lahendab selle probleemi ühe märgistiku ja kadudeta teisendustega oma vormide vahel.
Süsteemide (Windows, Solaris) juurutamine ja konverteerimine
Windows kasutab oma moodsate API-de jaoks sisemiselt UTF-16 koodi ja pakub Unicode'i ja koodilehtede (SBCS/DBCS/MBCS) vaheliseks teisendamiseks selliseid funktsioone nagu MultiByteToWideChar ja WideCharToMultiByte . Kui olete sunnitud koodilehele teisendama, võib tekkida andmete kadu, kui see ei suuda kõiki märke esitada.
Uued Windowsi rakendused peaksid sisemiselt kasutama UTF-16 koodi ja jätma teisendamise servadele (I/O, protokollid), et minimeerida koodivigade teket. Sellegipoolest säilitab Windows ühilduvuse koodilehtedega, kui see on vältimatu.
Läbivaadatud dokumentatsiooni kohaselt toetab Oracle Solaris 11 süsteemitasandil Unicode 6.0 ja ISO/IEC 10646:2011 standardeid, kasutades parameetrite komplektides vaikevorminguna UTF-8, mis säästab baitide järjestamise probleeme ja säilitab läbipaistvalt ASCII.
Unicode praktikas: veeb, dokumendid ja programmeerimine
Veebis on tavaline, et sisu esitatakse ja salvestatakse UTF-8 koodis . HTML-is deklareeritakse ühilduvuse tagamiseks '<meta charset="UTF-8">' ja vajadusel kasutatakse kuueteistkümnendsüsteemis numbrilisi üksusi (näiteks: euro '€').
Wordis saate Unicode'i sümboleid hõlpsalt sisestada, asetades kursori, minnes menüüsse Lisa > Sümbol või tippides koodi ja vajutades klahvikombinatsiooni Alt+X; see teisendab väärtuse vastavaks märgiks, järgides standardprotseduure. Vaadake ka Alt-koodide loendit sümbolite sisestamiseks klaviatuurilt.
Programmeerimiskeeltes : Python 3-s on stringid juba Unicode'is; Javas ja C#-s saab kasutada paomärke '\uXXXX'; HTML-is '&#xXXXX;'. Oluline on see, et redigeerimisel, kompileerimisel ja edastamisel kasutataks sama kodeeringut, et vältida vigu.
Sümbolite kopeerimine ja kleepimine toimib, kui kogu string on Unicode'is . Kui selle osad kasutavad teistsugust kodeeringut, võivad ilmuda küsimärgid, ruudud või muud kummalised sümbolid.
Märkide andmebaas (UCD), omadused ja kategooriad
Unicode'i märkide andmebaas (UCD) avaldab iga koodipunkti kohta selle nime, kategooria, skripti, tähesuuruse omadused, suuna ja muud omadused . See teave on renderdusmootorite ja tekstitöötluse korrektseks toimimiseks ülioluline.
Tänu nendele omadustele saavad erinevad komponendid ja algoritmid (näiteks sortimine, sõnade segmenteerimine või suur-/väiketähtede teisendamine) samade andmetega järjepidevalt käituda.
Standardi versioonid ja laiendused: olulisemad punktid
Unicode kasvab iga versiooniga , lisades uusi skripte, sümboleid ja emotikone. Oluliste verstapostide hulka kuuluvad 1991. aasta versioon 1.0 7.161 tähemärgiga ja hilisemad laiendused, mis on lisanud tuhandeid uusi sümboleid, ideogramme, emotikone ja skripte.
Näiteks 2022. aastal lisati versioonile 15.0 4.192 täiendavat CJK ideogrammi ja muud elementi, ulatudes ligikaudu 149 186 tähemärgini.
Unicode'i tabeli uurimise tööriistad
Tähemärkide otsimiseks ja analüüsimiseks on olemas tasuta utiliidid : Unibook Character Browser, SYMBL ja Branah.com võimaldavad teil pärida omadusi, nimesid ja tähemärkiplokke, muutes arendajate ja sisuloojate jaoks vajaliku teabe kiire leidmise lihtsamaks.
Kasutusjuhud: aadressivormid, rahvusvahelistumine ja äri
Kasutajate aadresside sisestamise võimaldamine oma keeles ja tähestikus aitab vähendada vigu ja parandada kasutuskogemust. Lisaks hoiab Unicode'i koostalitlus ära teisendusprobleemid erinevate süsteemide vahel, säilitades teksti terviklikkuse kogu digitaalses ahelas.
Sel põhjusel on Unicode põhielement, mis tagab teksti lõplikkuse kogu digitaalses infrastruktuuris , alates veebivormidest kuni andmebaasisüsteemide ja trükitud dokumentideni, olenemata sellest, kas samas lauses kasutatakse 'ñ', araabia, hiina keelt või emotikone.