UTF-8

UTF-8
Johdannainen työ CESU-8 [d]
Luoja Rob Pike ja Ken Thompson
Teoksen tai otsikon kieli useita kieliä [d]
avauspäivämäärä 2. syyskuuta 1992 [1]
Virallinen sivusto unicode.org/faq/utf_bom.…
Kuvattu linkissä ibm.com/docs/en/i… ​(  englanti)

UTF-8 ( englanninkielisestä  Unicode-muunnosmuodosta, 8-bittinen  - "Unicode-muunnosmuoto, 8-bittinen") on yleinen merkkikoodausstandardi , jonka avulla voit tallentaa ja lähettää Unicode-merkkejä tiiviimmin käyttämällä vaihtelevaa tavumäärää (alkaen 1–4), ja se on täysin taaksepäin yhteensopiva 7-bittisen ASCII -koodauksen kanssa . UTF-8-standardi on virallistettu standardeissa RFC 3629 ja ISO/IEC 10646 liitteessä D.

UTF-8-koodaus on nyt hallitseva verkkotilassa. Se on myös löytänyt laajan sovelluksen UNIX-tyyppisissä käyttöjärjestelmissä [2] .

UTF-8-muodon kehittivät 2. syyskuuta 1992 Ken Thompson ja Rob Pike , ja se otettiin käyttöön Plan 9 :ssä [3] . Windowsin koodaustunnus on 65001 [4] .

UTF-8, verrattuna UTF-16 :een , antaa suurimman lisäyksen latinalaisille teksteille , koska latinalaiset kirjaimet ilman diakriittisiä numeroita ja yleisimmät välimerkit on koodattu UTF-8:ssa vain yhdellä tavulla, ja näiden merkkien koodit vastaavat niiden ASCII -koodeja . [5] [6]

Koodausalgoritmi

UTF-8:n koodausalgoritmi on standardoitu RFC 3629:ssä ja koostuu kolmesta vaiheesta:

1. Määritä merkin koodaamiseen tarvittavien oktettien ( tavujen ) määrä. Merkkinumero on otettu Unicode-standardista.

Merkkien numeroalue Vaadittu määrä oktetteja
00000000-0000007F yksi
00000080-000007FF 2
00000800-0000FFFF 3
00010000-0010FFFF neljä

Unicode-merkeille, joiden numerot ovat välillä U+0000- U+007F(jotka vievät yhden tavun ja nollan merkittävimmässä bitissä), UTF-8-koodaus vastaa täysin 7-bittistä US-ASCII-koodausta.

2. Aseta ensimmäisen oktetin korkeat bitit ensimmäisessä vaiheessa määritetyn vaaditun oktettimäärän mukaisesti:

Jos koodaukseen tarvitaan useampi kuin yksi oktetti, niin okteteissa 2-4 kaksi merkitsevintä bittiä asetetaan aina arvoon 10 2 (10xxxxxx). Tämä helpottaa virran ensimmäisen oktetin erottamista, koska sen korkeat bitit eivät koskaan ole 10 2 .

Oktettien lukumäärä Merkittäviä palasia Näyte
yksi 7 0xxxxxxx
2 yksitoista 110xxxxx 10xxxxxx
3 16 1110xxxx 10xxxxxx 10xxxxxx
neljä 21 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

3. Aseta oktettien merkitsevät bitit vastaamaan Unicode -merkkien numeroa binäärimuodossa. Aloita täyttö merkkinumeron matalista biteistä, laita ne viimeisen oktetin mataliin, jatka oikealta vasemmalle ensimmäiseen oktettiin. Ensimmäisen oktetin vapaat bitit, jotka jäävät käyttämättä, täytetään nollilla.

Koodausesimerkkejä

Symboli Binäärimerkkikoodi UTF-8 binäärimuodossa UTF-8 heksadesimaalimuodossa
$ 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-merkki

Osoittaakseen, että tiedosto tai virta sisältää Unicode-merkkejä, tiedoston tai virran alkuun voidaan lisätä tavujärjestysmerkki (BOM) , joka UTF-8-koodattuina on kolmen tavun muodossa : .  EF BB BF16

1. tavu 2. tavu 3. tavu
binäärikoodi 1110 1111 1011 1011 1011 1111
Hex-koodi EF BB BF

Viides ja kuudes tavu

Aluksi UTF-8-koodaus salli enintään kuuden tavun koodauksen yhden merkin, mutta marraskuussa 2003 RFC 3629 kielsi viidennen ja kuudennen tavun käytön, ja koodattujen merkkien valikoima rajoitettiin merkkiin U+10FFFF. Tämä tehtiin yhteensopivuuden varmistamiseksi UTF-16:n kanssa.

Mahdollisia dekoodausvirheitä

Jokainen tavusarja ei ole kelvollinen. UTF-8-dekooderin on ymmärrettävä ja käsiteltävä asianmukaisesti seuraavat virheet:

Muistiinpanot

  1. https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
  2. Verkkosivustojen merkkikoodausten käyttötilastot, kesäkuu  2011
  3. Arkistoitu kopio (linkki ei saatavilla) . Haettu 27. helmikuuta 2007. Arkistoitu alkuperäisestä 1. maaliskuuta 2011.    (Englanti)
  4. Koodisivun tunnisteet - Windows-sovellukset | Microsoftin dokumentit . Haettu 14. heinäkuuta 2018. Arkistoitu alkuperäisestä 16. kesäkuuta 2019.
  5. No, olen palannut. String teoria . Robert O'Callahan (1. maaliskuuta 2008). Haettu 1. maaliskuuta 2008. Arkistoitu alkuperäisestä 23. elokuuta 2011.  
  6. Rostislav Chebykin. Kaikki koodaukset koodaus. UTF-8: moderni, asiantunteva, kätevä. . HTML ja CSS . Haettu 22. maaliskuuta 2009. Arkistoitu alkuperäisestä 23. elokuuta 2011.

Linkit