UTF-8

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]

Kodningsalgoritme

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.

Kodningseksempler

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

UTF-8 markør

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

Femte og sjette byte

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.

Mulige afkodningsfejl

Ikke hver sekvens af bytes er gyldig. En UTF-8-dekoder skal forstå og håndtere sådanne fejl korrekt:

Noter

  1. https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
  2. Usage Statistics of Character Encodings for Websites, juni  2011
  3. Arkiveret kopi (link ikke tilgængeligt) . Hentet 27. februar 2007. Arkiveret fra originalen 1. marts 2011.    (Engelsk)
  4. Kodesideidentifikatorer - Windows-applikationer | Microsoft docs . Hentet 14. juli 2018. Arkiveret fra originalen 16. juni 2019.
  5. Nå, jeg er tilbage. Strengteori . _ Robert O'Callahan (1. marts 2008). Hentet 1. marts 2008. Arkiveret fra originalen 23. august 2011.  
  6. Rostislav Chebykin. Alle kodninger kodning. UTF-8: moderne, kompetent, praktisk. . HTML og CSS . Hentet 22. marts 2009. Arkiveret fra originalen 23. august 2011.

Links