UTF-8 | |
---|---|
Afledt arbejde | CESU-8 [d] |
Skaber | Rob Pike og Ken Thompson |
Værkets eller titlens sprog | flere sprog [d] |
åbningsdato | 2. september 1992 [1] |
Officiel side | unicode.org/faq/utf_bom.… |
Beskrevet i linket | ibm.com/docs/en/i… ( engelsk) |
UTF-8 (fra det engelske Unicode Transformation Format, 8-bit - "Unicode transformation format, 8-bit") er en almindelig tegnkodningsstandard, der giver dig mulighed for mere kompakt at lagre og transmittere Unicode-tegn ved hjælp af et variabelt antal bytes (fra 1 til 4) og er fuldt bagudkompatibel med 7-bit ASCII -kodning . UTF-8-standarden er formaliseret i RFC 3629 og ISO/IEC 10646 Annex D.
UTF-8-kodning er nu dominerende på webhotellet. Det har også fundet bred anvendelse i UNIX-lignende operativsystemer [2] .
UTF-8-formatet blev udviklet den 2. september 1992 af Ken Thompson og Rob Pike og implementeret i Plan 9 [3] . Windows kodnings-id er 65001 [4] .
UTF-8, sammenlignet med UTF-16 , giver den største gevinst i kompakthed for latinske tekster , da latinske bogstaver uden diakritiske tegn , tal og de mest almindelige tegnsætningstegn er kodet i UTF-8 med kun én byte, og koderne for disse tegn svarer til deres koder i ASCII . [5] [6]
Kodningsalgoritmen i UTF-8 er standardiseret i RFC 3629 og består af 3 trin:
1. Bestem antallet af oktetter ( bytes ), der kræves for at kode et tegn. Tegnnummeret er taget fra Unicode-standarden.
Antal tegn | Nødvendigt antal oktetter |
---|---|
00000000-0000007F | en |
00000080-000007FF | 2 |
00000800-0000FFFF | 3 |
00010000-0010FFFF | fire |
For Unicode-tegn med tal fra U+0000til U+007F(optager én byte med nul i den mest signifikante bit), svarer UTF-8-kodningen fuldt ud til 7-bit US-ASCII-kodningen.
2. Indstil de høje bits for den første oktet i overensstemmelse med det nødvendige antal oktetter bestemt i det første trin:
Hvis der kræves mere end én oktet til kodning, er de to mest signifikante bit i oktetter 2-4 altid sat til 10 2 (10xxxxxx). Dette gør det nemt at skelne den første oktet i strømmen, fordi dens høje bits aldrig er 10 2 .
Antal oktetter | Betydelige bidder | Prøve |
---|---|---|
en | 7 | 0xxxxxxx |
2 | elleve | 110xxxxx 10xxxxxx |
3 | 16 | 1110xxxx 10xxxxxx 10xxxxxx |
fire | 21 | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
3. Indstil de signifikante bits af oktetterne til at matche Unicode -tegnnummeret udtrykt i binært. Start udfyldning fra de lave bits af tegnnummeret, læg dem i de lave bits af den sidste oktet, fortsæt fra højre mod venstre til den første oktet. De frie bits af den første oktet, der forbliver ubrugte, er fyldt med nuller.
Symbol | Binær tegnkode | 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 |
For at angive, at en fil eller stream indeholder Unicode-tegn, kan der indsættes et byte ordensmærke ( BOM ) i begyndelsen af filen eller streamen , som , når den er kodet i UTF-8, har form af tre bytes: . EF BB BF16
1. byte | 2. byte | 3. byte | |
---|---|---|---|
binær kode | 1110 1111 | 1011 1011 | 1011 1111 |
Hex kode | EF | BB | BF |
I starten tillod UTF-8-kodning op til seks bytes at kode et enkelt tegn, men i november 2003 forbød RFC 3629 brugen af den femte og sjette byte, og rækken af kodede tegn var begrænset til tegnet U+10FFFF. Dette blev gjort for at sikre kompatibilitet med UTF-16.
Ikke hver sekvens af bytes er gyldig. En UTF-8-dekoder skal forstå og håndtere sådanne fejl korrekt:
Tegnkodninger | |
---|---|
Historiske indkodninger | yderligere komp. semafor (Makarov) morse Bodo MTK-2 komp. 6-bit SCP RADIX-50 EBCDIC KOI-7 ISO 646 |
moderne 8-bit repræsentation | symboler ASCII ikke-ASCII 8-bit kodesider Kyrillisk KOI-8 Grundlæggende kodning Mackyrillisk ISO 8859 1 (lat.) 2 3 fire 5 (kir.) 6 7 otte 9 ti elleve 12 13 fjorten 15 (€) 16 Windows 1250 1251 (Kir.) 1252 1253 1254 1255 1256 1257 1258 WGL4 IBM og DOS 437 850 852 855 866 "alternativ" MIC |
Multibyte | traditionel DBCS GB2312 HTML unicode UTF-32 UTF-16 UTF-8 tegnliste Kyrillisk |
brugergrænseflade tastatur layout lokalitet linje oversættelse skrifttype translitteration brugerdefinerede skrifttyper forsyningsselskaber ikonv optage |
Serialisering af digitale dataformater | |
---|---|
Tekst | |
Internet og telekommunikation |
|
Medier | |
Andet |