UTF-8 kodējums

Last modified by superadmin on 2018-01-12 20:40

UTF-8 kodējums

UTF-8 ir efektīvs Unikoda stringu kodējums, kurā ņemts vērā, ka vairums teksta komunikācijās ir no ASCII repertuāra (jāņem vērā tikai pēdējie 7 biti); un ir optimizēts šiem simboliem. UTF-8 kodējumu izmanto Java iekšējai stringu glabāšanai kā arī tas ir izplatīta unikoda izpausme Internetā (sk. [RFC2044]).

Simbolu kodēšana

Atsevišķos simbolus iekodē saskaņā ar sekojošiem likumiem: ASCII simbolus iekodē kā vienu baitu, vairumu modificēto latīņu burtu (t.sk. latviešu un vācu), kiriliskos, grieķu, ebreju, arābu, utml. burtus kodē ar diviem baitiem un pārējos (piemēram, hieroglifus) ar trim baitiem.
  1. Simbolus, kuru unikoda numuri ir intervālā no '0000' līdz '007f' (no 0 līdz 127 decimālajā sistēmā) kodē ar vienu baitu - atstāj tos bez izmaiņām. Šis intervāls sastāv no ASCII simboliem.
  2. Simbolus intervālā no 'u0080' līdz 'u07ff' (no 256 līdz 2047 decimālajā sistēmā) kodē kā divus baitus. Šai nolūkā simbola unikoda numura binārajā pierakstā esošos 11 zīmīgos bitus sadala divos gabalos - pirmo baitu veido virknīte "110" un 5 vecākie biti, bet otro baitu veido virknīte "10" un 6 jaunākie biti.
  3. Simbolus intervālā no 'u0800' līdz 'uffff' kodē ar trim baitiem. Šai nolūkā simbola unikoda bināro pierakstu dala 3 daļās. Pirmā daļa ir virknīte "1110" un 4 vecākie biti, tad virknīte "10" un nākamie 6 biti, visbeidzot virknīte "10" un jaunākie 6 biti.

Kodējuma piemēri

Vārdu "Rīga" ar UTF-8 kodē sekojoši:


R ī g a
UTF-16 0052 012b 0067 0061
UTF-16 biti 0000000001010010 0000000100101011 0000000001100111 0000000001100001
UTF-8 biti -01010010 1100010010101011 -01100111 -01100001
UTF-8 52 c4ab 67 61

Praktiski to var pārbaudīt, ierakstot Google meklēšanas lodziņā stringu "Rīga". Parādīsies URL adrese: http://www.google.com/search?q=R%C4%ABga, t.i. "ī" URL adresē pārkodēsies par UTF-8 un pēc tam katram šādam heksadecimāli pierakstītam baitam vēl priekšā ir procenta simbols - t.i. viena simbola "ī" vietā tagad ir 6 simboli: "%C4%AB".

Literatūra

[RFC2044]
UTF-8 standarts
Tags:
Created by Kalvis Apsītis on 2008-05-01 20:19
    
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 6.4 - Documentation