UTF-16

Fra Wikipedia, den frie encyklopædi

UTF-16 (Unicode Transformation Format 16-bit) er en tabsfri indkodning med tegn af variabel længde af unicode-tegnsættet.

Med UTF-16 kan alle unicodepositioner repræsenteres med 2 eller 4 bytes. De laveste 256 positioner, svarer til tegnene i ISO 8859-1, bare med 2 bytes, hvor ISO 8859-1 kan repræsenteres med 1 byte pr. tegn.

De mest almindelige tegn er i unicode ligger i Basic Multilingual Plane, med værdier fra U+0000 til U+FFFF. Disse 65.536 tegn bliver alle repræsenteret med 2 bytes. De andre 16 plan i unicode bliver repræsenteret med 4 bytes.

Implementation[redigér | rediger kildetekst]

U+0000 til U+D7FF og U+E000 til U+FFFF[redigér | rediger kildetekst]

Disse værdier implementeres direkte i UTF-16 som den tilsvarende 16-bits værdi. Dette inkluderer de mest almindelige tegn, men i henhold til Unicode 9.0 falder nogle nye asiatiske, mellemøstlige og afrikanske tegn uden for dette område. De fleste emojies ligger heller ikke i dette område.

U+10000 til U+10FFFF[redigér | rediger kildetekst]

Tegn i dette område indkodes som to 16-bits værdier - et såkaldt surrogat par efter følgende metode:

  • Træk 0x010000 fra unicoden, så man får et 20 bits tal mellem 0x00000-0xFFFFF
  • De øverste 10 bit lægges til 0xD800 og giver det høje surrogat, som bliver et tegn mellem 0xD800 og 0xDBFF.
  • De nederste 10 bit lægges til 0xDC00 og giver det lave surrogat, som bliver et tegn mellem 0xDC00 og 0xDFFF.

For eksempel indkodes  (U+1F622 - grædende ansigt) som 0xD83D 0xDE22. Idet 0x1F622-0x10000 = 0x0F622 = 0000111101 0100100010 (binært). Det høje surrogat bliver de 10 øverste bit (00 0011 1101 = 0x03D) plus 0xD800 = 0xD83D. Det lave surrogat bliver de 10 nederste bit (01 0010 0010 = 0x222) plus 0xDC00 = 0xDE22.

U+D800 til U+DFFF[redigér | rediger kildetekst]

Tegn i dette område kan ikke umiddelbart repræsenteres i UTF-16, da de bruges som surrogat tegn. Unicode standarden reserverer disse tegn til at implementere surrogat værdier, så det er garanteret, at der aldrig vil blive tildelt tegn til dette område. Unicode standarden foreskriver at tegn i dette område skal betragtes som ulovlige. Det er imidlertid muligt for en implementation, at skelne så længe et højt surrogat ikke efterfølges af et lavt surrogat, ligesom UTF-8 uden problemer kan indkode disse værdier.

ProgrammeringSpire
Denne artikel om datalogi eller et datalogi-relateret emne er en spire som bør udbygges. Du er velkommen til at hjælpe Wikipedia ved at udvide den.