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]
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.
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 |
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 |
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.
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:
Teckenkodningar | |
---|---|
Historiska kodningar | ytterligare komp. semafor (Makarov) morse Bodo MTK-2 komp. 6-bitars SCP RADIX-50 EBCDIC KOI-7 ISO 646 |
modern 8-bitars representation | symboler ASCII icke-ASCII 8-bitars kodsidor Kyrillisk KOI-8 Grundläggande kodning MacCyrillic ISO 8859 1 (lat.) 2 3 fyra 5 (kir.) 6 7 åtta 9 tio elva 12 13 fjorton 15 (€) 16 Windows 1250 1251 (Kir.) 1252 1253 1254 1255 1256 1257 1258 WGL4 IBM & DOS 437 850 852 855 866 "alternativ" MIC |
Multibyte | traditionell DBCS GB2312 HTML unicode UTF-32 UTF-16 UTF-8 teckenlista Kyrillisk |
användargränssnitt tangentbordslayout plats linjeöversättning font translitterering anpassade typsnitt verktyg iconv spela in |
Serialisering av digitala dataformat | |
---|---|
Text | |
Internet och telekommunikation |
|
Media | |
Övrig |