UTF-8

UTF-8
Standard ISO 10646 ( Unicode )
Idiom flerspråklig
Tilstand I bruk
Tidligere UTF-1

UTF -8 (8 - bits Unicode Transformation Format ) er et Unicode- og ISO 10646 -tegnkodingsformat som bruker symboler med variabel lengde. UTF-8 ble laget av Robert C. Pike og Kenneth L. Thompson . Det er definert som en standard av < RFC 3629 > fra Internet Engineering Task Force (IETF). [ 1 ] Det er for tiden en av tre kodingsmuligheter anerkjent av Unicode og nettspråk, eller fire i ISO 10646 .

Dens viktigste egenskaper er:

Disse funksjonene gjør det attraktivt når det gjelder koding av e-poster og nettsider. [ 2 ] ​[ 3 ]​ IETF krever at alle Internett -protokoller indikerer hvilken koding de bruker for tekst, og at UTF-8 er en av de støttede kodingene. [ 4 ] Internet Mail Consortium ( IMC) anbefaler at alle e-postprogrammer kan lage og vise meldinger kodet med UTF-8. [ 5 ]

Historikk

UTF-8 ble utviklet av Kenneth L. Thompson under designkriteriene til Rob Pike 2. september 1992 . De implementerte det begge og implanterte det i Plan 9 fra Bell Labs operativsystem . Den ble senere offisielt presentert på USENIX - konferansen i San Diego i januar 1993 . Den ble forfremmet til standard under sponsing av X/Open Joint Internationalization Group (XOJIG) og fikk i prosessen forskjellige navn som FSS/UTF og UTF-2. [ 1 ]

Beskrivelse

UTF-8 deler Unicode-tegn i flere grupper, basert på antall byte som kreves for å kode dem. Antall byte avhenger utelukkende av tegnkoden som er tildelt av Unicode og antall byte som trengs for å representere den. Fordelingen av karakterer er som følger:

En viktig egenskap ved kodingen er at de mest signifikante bitene i den første byten i en multibytesekvens bestemmer lengden på sekvensen. Disse mest signifikante bitene 110 for to-byte-sekvenser; 1110 for tre-byte sekvenser, etc. Disse bitene gir også synkroniseringsinformasjon som gjør at starten på et symbol kan identifiseres.

Tegnkoding

Tabellen nedenfor viser hvordan tegn er kodet. Faste verdier i begynnelsen av hver byte garanterer overholdelse av det ikke-overlappende prinsippet, siden de er forskjellige avhengig av plasseringen til byten i strengen. UTF-16-koding er også inkludert for å se hvordan den skiller seg fra et fast antall byte-koding.

UNICODE punktområde
skalarverdi UTF-16 UTF-8 Karakterer
000000-00007F 00000000 0xxxxxxx 00000000 0xxxxxxx 0xxxxxxx Rekkevidde tilsvarende US-ASCII. Enkeltbyte-symboler der den mest signifikante biten er 0
000080-0007FF 00000yyy yyxxxxxx 00000yyy yyxxxxxx 110yyyyy 10xxxxxx To-byte symboler. Den første byten starter med 110, den andre byten starter med 10
000800-00FFFF zzzzyyyy yyxxxxxx zzzzyyyy yyxxxxxx 1110zzzz 10yyyyyy 10xxxxxx Tre-byte symboler. Den første byten starter med 1110, de følgende bytene starter med 10
010000-10FFFF 000uuuuu zzzzyyyy yyxxxxxx 110110ww wwzzzzyy
110111yy yyxxxxxx
(wwww = uuuuu - 1)
11110uuu 10uuzzzz 10yyyyyy 10xxxxxx Fire-byte symboler. Den første byten starter med 11110, de følgende bytene starter med 10

Etter skjemaet ovenfor vil det være mulig å øke den maksimale størrelsen på symbolet fra 4 til 6 byte. Definisjonen av UTF-8 gitt av Unicode støtter ikke denne muligheten, som støttes av ISO/IEC. [ 6 ]

La oss se, som et eksempel, hvordan tegnet eñe ('ñ') er kodet i UTF-8, som er representert i Unicode som 0x00F1:

For å gjenopprette det opprinnelige kodepunktet, utføres den omvendte prosessen, dekomponerer sekvensene av biter i deres komponenter og tar bare de nødvendige bitene.

Kodefeil

Kodingsregler setter derfor grenser for strengene som kan dannes. I henhold til standarden må en strengtolk avvise som ugyldige, og ikke forsøke å tolke, misformede tegn. En UTF-8-strengtolker kan avbryte ved å signalisere en feil, hoppe over feilaktige tegn eller erstatte dem med et U+FFFD-tegn ( ERSTATTNINGSKARAKTER ).

Følgende er kodefeil:

Byteordremerke (BOM)

Når det plasseres i begynnelsen av en UTF-8-streng, kalles et tegn 0xFEFF, kodet i UTF-8 som 0xEF, 0xBB, , et Byte Order Mark (BOM) og identifiserer innholdet som en streng med Unicode-tegn. Når dette tegnet finnes andre steder i strengen, skal det tolkes med sin opprinnelige Unicode-betydning ( ). Siden UTF-8 er en koding der informasjonsenheten er byten, har den ikke den nytten som den har i UTF-16 og UTF-32 til å identifisere rekkefølgen av byte i et ord ( endianness ). 0xBFZWNBSP

Spesifikasjonen anbefaler eller fraråder bruk av stykkliste, selv om den fraråder å fjerne den hvis den eksisterer som et sikkerhetstiltak, for å forhindre feil i digitale signaturapplikasjoner osv. Den advarer også om at den må elimineres i sammenkoblingsoperasjoner for å forhindre at den holdes i ikke-startposisjoner.

UTF-8-avledninger

Følgende kodingsstandarder skiller seg fra og er derfor inkompatible med UTF-8-spesifikasjonen.

CESU-8

Denne implementeringen utfører en direkte oversettelse av den representerte tegnstrengen med UTF-16 i stedet for å kode Unicode-kodepunktene. Resultatet er forskjellige kodinger for Unicode-tegn med kode større enn 0xFFFF. [ 1 ] Oracle implementerer fra og med versjon 8 CESU-8 med aliaset UTF8 , og fra og med versjon 9, standard UTF-8 med et annet alias. [ 7 ] Java og Tcl bruker denne kodingen. [ referanse nødvendig ]

Modifisert UTF-8

Med modifisert UTF-8 er null -tegnet kodet som 0xC080i stedet for 0x00. På denne måten vil ikke en tekst som inneholder null-tegnet inneholde byten 0x00og vil derfor ikke bli avkortet på språk som C som vurderer 0x00en slutt på strengen.

Alle kjente implementeringer av modifisert UTF-8 er også CESU-8-kompatible. [ referanse nødvendig ]

Fordeler og ulemper

Fordeler

Ulemper

Referanser

  1. a b c d e F. Yergeau (november 2003 ). "RFC 3629 - UTF-8, et transformasjonsformat av ISO 10646" . Internett-samfunnet . Hentet 20. mai 2009 . 
  2. ^ "Flytter til Unicode 5.1" . Offisiell Google-blogg. 5. mai 2008 . Hentet 20. mai 2009 . 
  3. Bruk av tegnkodinger for nettsteder
  4. H. Alvestrand (januar 1998 ). "<RFC 2277> - Offisiell IETF-policy for tegnsett og språk" . Internet Engineering Task Force . Hentet 20. mai 2009 . 
  5. ^ "Bruk av internasjonale tegn i Internett-post" . Internet Mail Consortium. 1. august 1998 . Arkivert fra originalen 26. oktober 2007 . Hentet 20. mai 2008 . 
  6. Unicode-konsortiet (oktober 2006). "2.5 EncodingForms" . I Julie D. Allen, Joe Becker (et al.), red. Unicode 5.0 standard (på engelsk) . Addison-Wesley. ISBN  0-321-48091-0 . 
  7. Simon Law ( mai 2005 ). "Globaliseringsstøtte. Oracle Unicode-databasestøtte." . Oracle Corporation . Arkivert fra originalen 19. april 2009 . Hentet 20. mai 2009 . 
  8. abc Unicode -konsortiet (oktober 2006). Julie D. Allen, Joe Becker (et al.), red. Unicode 5.0 standard (på engelsk) . Addison-Wesley. ISBN  0-321-48091-0 . 

Se også

Eksterne lenker