close

UTF-16

Gå til navigation Gå til søg

UTF-16 , som står for "UCS Transformation Format for 16 Planes of Group 00" i ISO/IEC 10646:2003 , er en form for UCS- og Unicode-tegnkodning ved hjælp af symboler med variabel længde. Det er officielt defineret i bilag C til ISO/IEC 10646:2003. Det er også beskrevet i Unicode Standard (version 3.0 eller nyere), samt i IETF RFC 2781 .

Dens vigtigste egenskaber er:

  • Det er i stand til at repræsentere ethvert Unicode-tegn.
  • Den bruger symboler med variabel længde: 1 eller 2 16-bit ord pr. Unicode-tegn (2 eller 4 bytes). Informationsenheden er 16-bit ordet .
  • Det er optimeret til at repræsentere Basic Multilingual Plane (BMP) tegn og tegn i området U+0000 til U+FFFF. BMP'en indeholder langt de fleste tegn og skrivesystemer, der bruges i dag. Når begrænset til det grundlæggende flersprogede plan, kan UTF-16 betragtes som en form for kodning med symboler med fast størrelse (16-bit).
  • Ikke-overlappende: 1-ords (16-bit) symboler bruger en delmængde af værdier, der ikke kan bruges i 2-ords (32-bit) symboler.

Historie

UTF-16 er udviklingen af ​​UCS-2 , til stede i Unicode-standarden op til version 1.1. I UCS-2 er hvert kodepunkt repræsenteret af dets værdi, hvilket begrænsede dets brug til det grundlæggende flersprogede plan . I version 2.0 af Unicode-standarden indebar beslutningen om at udvide koderummet over FFFF-koden behovet for at inkludere et nyt format, der ville understøtte de nye fly, 15 og 16, til privat brug. Standarden definerede dog endnu ikke nogen kodepunkter, der gjorde brug af denne mekanisme, før version 3.1. [ 1 ]​ [ 2 ]

Beskrivelse

I UTF-16 er hvert kodepunkt mellem U+0000 og U+FFFF kodet, uændret, ved hjælp af 16 bit. Dette interval svarer til det grundlæggende flersprogede plan i Unicode, således at langt de fleste tegn i almindelig brug er kodet med 16 bit.

Tegnene i de ekstra planer er kodet med 32 bit. Kodningen udføres ikke direkte, det vil sige, at den endelige kode ikke er værdien af ​​kodepunktet. UTF-16 definerer et transformationsformat for disse tilfælde kaldet surrogatpar .

Ved evaluering af den lagerplads, der kræves af en tekst, der bruger denne kodning, kan det antages, at de tegn, der ikke er inkluderet i grundplanet, er meget sjældne, og derfor vil hvert tegn bruge 16 bit. Denne erklæring er også gyldig for tilfældet med CJK- scripts (kinesisk, japansk og koreansk).

Surrogat-kammerater

Image
Eksempel : Kodning af Unicode -tegnet U+1D11E, diskantnøgle . Karakteren er uden for grundplanet (BMP) og kræver derfor brug af surrogatpar.

Unicode og ISO/IEC har begrænset den plads, der kan allokeres til koder, til 10FFFF, så der kræves maksimalt 21 bits for at repræsentere et hvilket som helst tegn. Hvis du bruger to ord til at repræsentere koder over FFFF, har du overskydende bits. Ved at udnytte denne omstændighed blev systemet med surrogatpar designet til at repræsentere karakterer uden for grundplanet.

Et surrogatpar er defineret som to 16-bit ord, hvor:

  • Det første 16-bit ord kaldes det høje surrogat eller initial surrogat i Unicode-terminologi eller RC-elementer i den øvre midterste zone i ISO/IEC-terminologi. De tager værdier i området [D800,DBFF].
  • Det andet 16-bit ord kaldes det lave surrogat eller det endelige surrogat i Unicode-terminologi eller de lav-midte RC-elementer i ISO/IEC-terminologi. De tager værdier i området [DC00,DFFF].
  • Det ikke-overlappende princip er opfyldt, sættene med høje, lave og ikke-surrogatkodesurrogatværdier er fuldstændig usammenhængende.

For at overholde det ikke-overlappende princip er værdisættet, der bruges som surrogatpar, blevet standardiseret og reserveret, så det ikke kan bruges til andre formål.

Surrogat-peer-systemet blev tilføjet i version 2.0 af Unicode, ISO 10646:xxxx, og ved design minimerer det konflikter, der kunne opstå med tidligere implementeringer, der ikke bruger dem.

Kodningsfejl

Kodningsregler sætter derfor grænser for de strenge, der kan dannes. Ifølge standarden skal en strengfortolker afvise som ugyldige, og ikke forsøge at fortolke, misdannede strenge.

  • En indledende surrogatkode skal altid efterfølges af en afsluttende surrogatkode.
  • En endelig surrogatkode skal altid indledes med en initial surrogatkode.
  • Ugyldig tegnkodning understøttes ikke. Kodepunkterne U+FFFE, U+FFFF og området U+FDD0 til U+FDEF er specielle kodepunkter, der ikke repræsenterer tegn og bør ikke kodes i UTF-16. Reserverede værdier uden for grundplanet understøttes heller ikke.

Kodningsskemaer og stykliste

Fra UTF-16-transformationsformatet er der defineret 3 kodningsskemaer. Selvom de deler navne, bør kodningsskemaer og formularer ikke forveksles. Kodningsskemaer omhandler , hvordan kodet information serialiseres. [ 3 ] Sikkerheden i informationsudveksling mellem heterogene systemer kræver implementering af systemer, der gør det muligt at bestemme den korrekte rækkefølge af bits og bytes og garanterer, at rekonstruktionen af ​​informationen er korrekt. En grundlæggende forskel mellem processorer er rækkefølgen, hvori bytes er arrangeret i 16-bit og 32-bit ord, hvilket kaldes endianness . Kodningsordninger skal sikre, at enderne af en kommunikation ved, hvordan de modtagne oplysninger skal fortolkes.

indkodningsskema Endianness Stykliste understøttet
UTF-16 Big Endian eller Little Endian Ja
UTF-16BE big-endian Nix
UTF-16LE lille-endian Nix

Unicode definerer et særligt mærke, byteordremærke eller BOM , i starten af ​​en fil eller en kommunikation for at eksplicitere bytebestilling. Dette mærke er tegnet med kodepunktet U+FEFF. Når den er i en udgangsposition, kan den tolkes som stykliste afhængigt af kommunikationens kontekst. I enhver anden position bevarer den sin oprindelige semantik som et NUL BREDDE IKKE-BRYDENDE MELLEMRUM . Når en overordnet protokol specificerer byterækkefølgen, er flaget ikke påkrævet og kan udelades, hvilket resulterer i de ovenfor anførte skemaer med suffikset BE eller LE . I tilfælde af UTF-16-skemaet, som understøtter BOM, hvis dette ikke er specificeret, antages byte-rækkefølgen at være big-endian .

Se også

Referencer

  1. Unicode Consortium, Joan Aliprand, et al. (januar 2000). "Bilag D. Ændringer fra Unicode version 2.0" . Unicode-standarden. Version 3.0 standard (på engelsk) . Addison-Wesley. ISBN  0-201-61633-5 . Arkiveret fra originalen den 17. november 2008 . Hentet 28. juli 2009 . 
  2. Unicode-konsortiet (oktober 2006). "Bilag D. Ændringer fra tidligere versioner" . I Julie D. Allen, Joe Becker (et al.), red. Unicode 5.0 standard (på engelsk) . Addison-Wesley. ISBN  0-321-48091-0 . 
  3. Unicode-konsortiet (oktober 2006). "2.5 EncodingForms" . I Julie D. Allen, Joe Becker (et al.), red. Unicode 5.0 standard (på engelsk) . Addison-Wesley. ISBN  0-321-48091-0 .