- Unicode tildeler et unikt kodepunkt til hvert tegn og synkroniserer dets repertoire med ISO/IEC 10646.
- UTF-8, UTF-16 og UTF-32 koder de samme tegn og tillader tabsfri konvertering.
- Normaliserings-, Bidi- og UCD-egenskaber sikrer ensartet sammenligning, rækkefølge og gengivelse.
- Brug af Unicode (helst UTF-8 på nettet) forhindrer korruption og letter internationalisering.
Unicode er det almindelige sprog, som computere bruger, når de håndterer tekst : det tildeler et unikt nummer til hvert tegn og symbol fra næsten ethvert skriftsystem, så det kan gemmes, behandles og deles problemfrit mellem platforme og lande.
Denne standard opstod for at overvinde begrænsningerne i gamle tegnsæt ( ASCII-sættet , tegntabeller, EBCDIC osv.), som ikke levede op til kravene eller var inkompatible med hinanden, og i dag er den synkroniseret med ISO/IEC 10646, vedligeholder algoritmer (såsom den tovejs) og definerer egenskaber og normaliseringsregler, så alt fungerer ensartet.
Hvad er Unicode, og hvorfor er det så vigtigt?
Unicode er en universel og konstant udviklende tegnkodningsstandard , der beskriver hvert tegn med et navn, et kodepunkt og et sæt egenskaber (skrift, kategori, retningsbestemthed, store og små bogstaver osv.). Unicode Technical Committee (UTC) inden for Unicode Consortium holder den synkroniseret med ISO/IEC 10646-standarden.
Dens mål er universalitet, ensartethed og unikhed : et bredt repertoire, der muliggør entydig udveksling af flersproget tekst med klare og reproducerbare regler. Takket være dette kan moderne teknologier (operativsystemer, browsere, XML, Java, databaser) blande latinske og arabiske skrifttyper, CJK-ideogrammer, emojis og tekniske eller musikalske symboler inden for det samme dokument.
Tegn, glyffer og kodepunkter
I Unicode er et tegn en abstrakt informationsenhed, og et kodepunkt er dets numeriske identifikator . En glyf er den visuelle form (det, du ser på skærmen), som afhænger af skrifttypen . Et enkelt tegn kan have flere glyffer, og nogle gange repræsenterer en glyf mere end ét tegn.
Den sædvanlige notation for et kodepunkt er U+XXXX i hexadecimal . Illustrative eksempler fra det analyserede materiale: det lille 'l' er U+006C, det prækomponerede lille 'ü' er U+00FC, 'é' er U+00E9 og det græske beta: store bogstaver er U+0392 og små bogstaver U+03B2 (i nogle tekster er 'β' citeret sammen med U+0392, men den kode svarer til store bogstaver 'Β').
Unicode-koderummet har 1.114.112 mulige positioner (op til U+10FFFF) , organiseret til at dække og klassificere alle skriftsystemer og symboler, med titusindvis af effektive og voksende tildelinger i hver version.
Planer, områder og blokke
Unicode opdeler sit tegnrum i 17 planer med op til 65.536 kodepunkter hver . Denne organisering gør det nemt at gruppere relaterede skrifttyper og symboler og hurtigt finde det, du leder efter.
Mest relevante planer : Basic Multilingual Plane (BMP, plan 0) samler næsten alle moderne alfabeter og mange symboler; Supplementary Multilingual Plane (SMP, plan 1) gemmer historiske skrifttyper og tekniske symboler (f.eks. musikalske og matematiske); Supplementary Ideographic Plane (SIP, plan 2) udvider CJK-ideogrammerne; plan 14 (SSP) indeholder særlige betegnelser; og plan 15 og 16 er til privat brug.
Blokke og områder : Kortene er uformelt opdelt i områder og formelt i sammenhængende blokke. Blokke bruges til at tabulere og dokumentere tegn, selvom de ikke altid svarer til meningsfulde sproglige grupperinger.
CJK-ideogrammer og Unihan-projektet
Østasiatiske (Han) ideogrammer er samlet i Unicode med stilistiske variationer efter region , men refererer alle til det samme abstrakte tegn. Deres håndtering håndteres af Ideographic Rapporteur Group (IRG), en ISO/IEC JTC1/SC2/WG2-gruppe med repræsentation fra Kina, Japan, Korea, Vietnam, Hong Kong, Macau, Singapore, USA og andre.
Unihan-databasen samler hjælpeoplysninger (læsninger, betydninger, ækvivalenser), der er essentielle for håndtering af disse ideogrammer på forskellige sprog og historiske eller virksomhedsstandarder.
Vigtigste CJK-blokke og -udvidelser :
- CJK Unified Ideographs (BMP, U+4E00–U+9FFF)20.992 almindeligt anvendte tegn.
- Udvidelse A (BMP, U+3400–U+4DBF)6.592 mindre hyppige ideogrammer.
- B-H-udvidelserI SMP/SIP/TIP giver de op til titusindvis mere (B: U+20000–U+2A6DF, 42.720; C: U+2A700–U+2B73F, 4.154; D: U+2B740–U+2B81F, 222; E: U+2B820–U+2CEAF, 5.762; F: U+2CEB0–U+2EBEF, 7.473; G: U+30000–U+3134F, 4.939;
- Andre relaterede CJK-blokkeKangxi-radikaler (U+2F00–U+2FDF), CJK-symboler og tegnsætning (U+3000–U+303F), kompatibilitet og kompatibilitetsformater, supplement til kompatibilitetsideogrammer osv.
Unicode forventer, at inkorporeringen af ideogrammer ikke vil have en absolut ende , og overvejer mekanismer som ideografiske beskrivelsessekvenser til at repræsentere ukodede symboler ved at opdele dem i eksisterende komponenter (med forsigtighed: uden kanonisk nedbrydning eller garantier i operationer som søgning eller rækkefølge).
Kodningsformer: UTF-8, UTF-16 og UTF-32
Unicode definerer transformationsformer (UTF), der konverterer kodepunkter til lagringsenheder, så software effektivt kan behandle tekst i henhold til dens kontekst.
UTF-8 er et byte-orienteret kodningsformat med variabel længde, der er ASCII-kompatibelt i området U+0000–U+007F i en enkelt byte. Den nuværende standard bruger 1 til 4 bytes pr. tegn; nogle ældre tekster nævner 1-6, men i moderne Unicode er det 1-4. Det er det dominerende format på nettet.
UTF-16 bruger 16-bit enheder
(en eller to kodeenheder pr. tegn) : de fleste BMP-tegn passer ind i én enhed; supplerende tegn bruger surrogatpar i området U+D800–U+DFFF.
UTF-32 har en fast længde: 4 bytes pr. tegn, simpelt men pladskrævende; nyttigt når direkte tegnindeksering er vigtig, og hukommelse ikke er et problem.
Hvordan bits distribueres i UTF-8
UTF-8-formatet fordeler kodepunktbits i sekvenser på 1 til 4 bytes med genkendelige headere, hvilket undgår tvetydigheder og letter detekteringen af tegngrænser.
| Unicode-område | Bitmønster | Bytes |
|---|---|---|
| U+0000..U+007F | 0xxxxxxx | 1 |
| U+0080..U+07FF | 110ååååå 10xxxxxx | 2 |
| U+0800..U+FFFF | 1110zzzz 10yyyyyy 10xxxxxx | 3 |
| U+010000..U+10FFFF | 11110uuu 10uuuzzzz 10yyyyyy 10xxxxxx | 4 |
En vigtig fordel ved UTF-8 er, at det undgår problemer med byteorden (endianness) og muliggør yderst effektiv behandling af tekststrømme, udover at være bagudkompatibel med ASCII.
Kodningsskemaer, endianness og BOM
Ud over UTF-formularer beskriver Unicode serialiseringsskemaer , der løser, hvordan bytes transmitteres mellem systemer med forskellig endianness, og hvordan aspekter som byterækkefølge signaleres.
- UTF-8Endianhed gælder ikke. Det kan bæres Byte-rækkefølgemærke (BOM) som et hint, selvom det ikke er påkrævet eller anbefalet som standard.
- UTF-16BE/LE (big/little-endian) varianter og valgfri BOM (hvis manglende og ikke defineret af protokollen, antages big-endian).
- UTF-32BE/LE-varianter med analoge regler; stykliste tilladt som ordremærke.
Der er også specifikke varianter såsom UTF-16BE/UTF-16LE og UTF-32BE/UTF-32LE (uden BOM ifølge konventionen) og andre historiske kompatibilitetskodninger såsom UTF-7 eller UTF-EBCDIC, ud over GB18030 (kinesisk svarende til UTF-8 med understøttelse af forenklet og traditionelt kinesisk).
Normalisering, sammensætning og ækvivalenser
Mange tegn kan repræsenteres som prækomponerede eller som sekvenser af basis- + kombinationstegn . Klassiske eksempler fra det reviderede materiale: det prækomponerede 'Ä' er U+00C4, mens den dekomponerede form er 'A' (U+0041) + trema (U+0308). Det vietnamesiske 'ỗ' kan repræsenteres som 'o' (U+006F) + cirkumfleks (U+0302) + tilde (U+0303).
Unicode definerer standardiserede former og to typer ækvivalens : kanonisk (samme væsentlige indhold) og kompatibilitet (former, der kan se ens ud, men har semantiske forskelle). Standardisering sikrer pålidelig strengsammenligning og reducerer dobbeltarbejde.
Tovejsalgoritme og specialtegn
For højre-mod-venstre-skrifttyper, såsom arabisk eller hebraisk, inkorporerer Unicode en standardiseret og udviklende tovejsalgoritme (Bidi) (f.eks. revisioner i 6.3), så blandede tekster med latin og arabisk repræsenteres i den korrekte visuelle rækkefølge.
Klasser af kodepunkter, der skal være kendte i henhold til det modtagne materiale: grafiske tegn (bogstaver, tegn, symboler), formatering (usynlige tegn, der påvirker behandlingen: U+2028 linjeskift, U+2029 afsnitskift, U+00A0 mellemrum), nedarvede kontrolkoder for kompatibilitet (intervaller U+0000–U+001F, U+007F, U+0080–U+009F), privat brug, reserverede positioner, erstatninger (U+D800–U+DFFF for UTF-16) og ikke-tegn (U+FFFE, U+FFFF i hvert plan).
Unicode, ISO/IEC 10646 og andre standarder (ASCII, ANSI, tegntabeller)
Unicode er synkroniseret med ISO/IEC 10646 (UCS) og bevarer tilknytninger til tidligere standarder (ASCII, ISO 8859-1, ANSI Z39.64, JIS X 0208, KS X 1001, GB 2312, GB 18030, HKSCS, CNS 11643 osv.), udover at reservere plads til privat brug af producenter.
ASCII vs. Unicode : ASCII er et 7-bit tegnsæt med 128 tegn , hvilket er tilstrækkeligt til grundlæggende engelsk, men utilstrækkeligt til sprog med diakritiske tegn, ideogrammer eller emojis . Unicode dækker mere end 140.000 tegn og fortsætter med at vokse med 8/16/32-bit kodning i henhold til UTF-12-formatet.
ANSI og tegntabel : 'ANSI' refererer normalt til begrænsede og gensidigt inkompatible 8-bit Windows-tegntabel. En computer, der kører OEM-Latin II, og som åbner tekst i IBM EBCDIC-Cyrillic, vil se forkerte tegn. Unicode løser dette problem med et enkelt tegnsæt og tabsfri konverteringer mellem sine egne former.
Implementering på systemer (Windows, Solaris) og konvertering
Windows bruger internt UTF-16 til sine moderne API'er og tilbyder funktioner som MultiByteToWideChar og WideCharToMultiByte til konvertering mellem Unicode og tegntabel (SBCS/DBCS/MBCS). Hvis du er tvunget til at konvertere til en tegntabel, kan der være datatab, hvis den ikke kan repræsentere alle tegn.
Nye applikationer på Windows bør bruge UTF-16 internt og overlade konverteringen til kanterne (I/O, protokoller), hvilket minimerer korruption. Alligevel opretholder Windows kompatibilitet med tegntabel, når det er uundgåeligt.
Ifølge den reviderede dokumentation understøtter Oracle Solaris 11 Unicode 6.0 og ISO/IEC 10646:2011 på systemniveau og bruger UTF-8 som standardformat i parametersættene, hvilket sparer problemer med byterækkefølge og transparent bevarer ASCII.
Unicode i praksis: Web, dokumenter og programmering
På nettet er det almindeligt at servere og gemme indhold i UTF-8 . I HTML skal du deklarere '<meta charset="UTF-8">' for at sikre kompatibilitet, og bruge hex-numeriske enheder, når det er nødvendigt (f.eks.: euroen '€').
I Word kan du nemt indsætte Unicode-symboler ved at placere markøren, gå til Indsæt > Symbol eller ved at skrive koden og trykke på Alt+X. Dette konverterer værdien til dens tegn ved at følge standardprocedurerne. Se også listen over Alt-koder til indsættelse af symboler fra tastaturet.
I programmeringssprog : i Python 3 er strenge allerede Unicode; i Java og C# kan du bruge escape-tegnene '\uXXXX'; i HTML, '&#xXXXX;'. Det vigtige er, at redigering, kompilering og transmission bruger den samme kodning for at undgå fejl.
Kopiering og indsættelse af symboler fungerer, hvis hele strengen er i Unicode . Hvis dele af den bruger en anden kodning, kan der forekomme spørgsmålstegn, firkanter eller andre mærkelige symboler.
Tegndatabase (UCD), egenskaber og kategorier
Unicode-tegndatabasen (UCD) offentliggør for hvert kodepunkt dets navn, kategori, script, egenskaber for store og små bogstaver, retningsbestemmelse og andre karakteristika . Disse oplysninger er afgørende for, at renderingsmotorer og tekstbehandling fungerer korrekt.
Takket være disse egenskaber kan forskellige komponenter og algoritmer (såsom sortering, ordsegmentering eller transformation af store/små bogstaver) opføre sig ensartet med de samme data.
Versioner og udvidelser af standarden: højdepunkter
Unicode vokser med hver version og inkorporerer nye skrifttyper, symboler og emojis. Vigtige milepæle inkluderer version 1.0 i 1991 med 7.161 tegn og efterfølgende udvidelser, der har tilføjet tusindvis af nye symboler, ideogrammer, emojis og skrifttyper.
For eksempel tilføjede version 15.0 i 2022 4.192 yderligere CJK-ideogrammer og andre elementer, hvilket nåede op på cirka 149.186 tegn.
Værktøjer til at udforske Unicode-tabellen
Der findes gratis værktøjer til at søge efter og analysere tegn : Unibook Character Browser, SYMBL og Branah.com giver dig mulighed for at forespørge på egenskaber, navne og tegnblokke, hvilket gør det nemmere for udviklere og indholdsskabere hurtigt at finde de oplysninger, de har brug for.
Brugsscenarier: adresseformularer, internationalisering og forretning
At tillade brugerne at indtaste adresser på deres eget sprog og skrifttype hjælper med at reducere fejl og forbedre brugeroplevelsen. Derudover forhindrer Unicode-interoperabilitet konverteringsproblemer mellem forskellige systemer og opretholder tekstintegriteten i hele den digitale kæde.
Af denne grund er Unicode det grundlæggende element, der sikrer, at teksten forbliver endelig i hele den digitale infrastruktur , fra webformularer til databasesystemer og trykte dokumenter, uanset om du bruger 'ñ', arabisk, kinesisk eller emojis i den samme sætning.