UTF-8

UTF-8
Avledningsarbete CESU-8 [d]
Skapare Rob Pike och Ken Thompson
Verkets eller titelns språk flera språk [d]
öppningsdatum 2 september 1992 [1]
Officiell sida unicode.org/faq/utf_bom.…
Beskrivs i länken ibm.com/docs/en/i... ​(  engelska)

UTF-8 (från engelska  Unicode Transformation Format, 8-bit  - "Unicode transformation format, 8-bit") är en vanlig teckenkodningsstandard som låter dig mer kompakt lagra och överföra Unicode-tecken med ett variabelt antal byte (från 1 till 4) , och är helt bakåtkompatibel med 7-bitars ASCII -kodning . UTF-8-standarden är formaliserad i RFC 3629 och ISO/IEC 10646 Annex D.

UTF-8-kodning är nu dominerande i webbutrymmet. Det har också hittat bred tillämpning i UNIX-liknande operativsystem [2] .

UTF-8-formatet utvecklades den 2 september 1992 av Ken Thompson och Rob Pike och implementerades i Plan 9 [3] . Windows kodnings-ID är 65001 [4] .

UTF-8, jämfört med UTF-16 , ger den största vinsten i kompakthet för latinska texter , eftersom latinska bokstäver utan diakritiska tecken , siffror och de vanligaste skiljetecken är kodade i UTF-8 med endast en byte, och koderna för dessa tecken motsvarar deras koder i ASCII . [5] [6]

Kodningsalgoritm

Kodningsalgoritmen i UTF-8 är standardiserad i RFC 3629 och består av tre steg:

1. Bestäm antalet oktetter ( byte ) som krävs för att koda ett tecken. Teckennumret är hämtat från Unicode-standarden.

Teckennummerintervall Erforderligt antal oktetter
00000000-0000007F ett
00000080-000007FF 2
00000800-0000FFFF 3
00010000-0010FFFF fyra

För Unicode-tecken med siffror från U+0000till U+007F(upptar en byte med noll i den mest signifikanta biten), motsvarar UTF-8-kodningen helt 7-bitars US-ASCII-kodningen.

2. Ställ in de höga bitarna för den första oktetten i enlighet med det erforderliga antalet oktetter som bestämdes i det första steget:

Om mer än en oktett krävs för kodning, är de två mest signifikanta bitarna i oktetter 2-4 alltid satta till 10 2 (10xxxxxx). Detta gör det lätt att urskilja den första oktetten i strömmen eftersom dess höga bitar aldrig är 10 2 .

Antal oktetter Betydande bitar Prov
ett 7 0xxxxxxx
2 elva 110xxxxx 10xxxxxx
3 16 1110xxxx 10xxxxxx 10xxxxxx
fyra 21 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

3. Ställ in de signifikanta bitarna i oktetterna så att de matchar Unicode -teckennumret uttryckt i binärt. Börja fylla från de låga bitarna i teckennumret, lägg dem i de låga bitarna i den sista oktetten, fortsätt från höger till vänster till den första oktetten. De fria bitarna i den första oktetten som förblir oanvända fylls med nollor.

Kodningsexempel

Symbol Binär teckenkod UTF-8 i binär UTF-8 i hex
$ U+0024 0100100 00100100 24
¢ U+00A2 10100010 11000010 10100010 C2 A2
U+20AC 100000 10101100 11100010 10000010 10101100 E2 82 AC
🍈 U+10348 1 00000011 01001000 11110000 10010000 10001101 10001000 F0 90 8D 88

UTF-8-markör

För att indikera att en fil eller ström innehåller Unicode-tecken kan ett byteordermärke ( BOM ) infogas i början av filen eller strömmen , som , när den är kodad i UTF-8, har formen av tre byte: .  EF BB BF16

1:a byte 2:a byte 3:e byte
binär kod 1110 1111 1011 1011 1011 1111
Hexkod EF BB BF

Femte och sjätte byte

Ursprungligen tillät UTF-8-kodning upp till sex byte att koda ett enda tecken, men i november 2003 förbjöd RFC 3629 användningen av den femte och sjätte byten, och utbudet av kodade tecken begränsades till tecknet U+10FFFF. Detta gjordes för att säkerställa kompatibilitet med UTF-16.

Möjliga avkodningsfel

Inte varje sekvens av byte är giltig. En UTF-8-avkodare måste förstå och hantera sådana fel på ett adekvat sätt:

Anteckningar

  1. https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
  2. Användningsstatistik för teckenkodningar för webbplatser, juni  2011
  3. Arkiverad kopia (länk ej tillgänglig) . Hämtad 27 februari 2007. Arkiverad från originalet 1 mars 2011.    (Engelsk)
  4. Kodsidaidentifierare - Windows-applikationer | Microsoft docs . Hämtad 14 juli 2018. Arkiverad från originalet 16 juni 2019.
  5. Nåväl, jag är tillbaka. Strängteori . _ Robert O'Callahan (1 mars 2008). Hämtad 1 mars 2008. Arkiverad från originalet 23 augusti 2011.  
  6. Rostislav Chebykin. Alla kodningar kodning. UTF-8: modern, kompetent, bekväm. . HTML och CSS . Hämtad 22 mars 2009. Arkiverad från originalet 23 augusti 2011.

Länkar