UTF-8 (8-bit Unicode Transformation Format) – viena kintamo ilgio simbolių koduočių, kuria galima užrašyti bet kokį Unikodo simbolį bei lieka ir pilnas suderinamumas su 7 bitų ASCII koduote, pritaikyta anglų kalbos abėcėlei.
UTF-8 dažnai naudojama internete, kur dėl istorinių suderinamumo priežasčių ar dėl taupumo ne visada galima pereiti prie UTF-16 koduotės.
UTF-8 yra Unikodo tipo koduotė, kurioje vienam simboliui skiriama nuo 1 baito iki 4 baitų.
Po 1 baitą užima Angliškos abėcėlės simboliai, skaičiai, skyrybos ženklai. Taip koduojami 128 simboliai, kurių kodai priklauso ASCII koduotei, Unikode užimančiai sritį nuo U+0000 iki U+007F.
Po 2 baitus užima išplėstiniai lotyniški rašmenys (ir lietuviškos raidės), graikų, armėnų, koptų, hebrajų ir arabų abėcėlių bei kirilicos raidės.
Po 3 baitus užima raidės kitų rašto sistemų (japonų, kinų, kitų Azijos tautų).
Po 4 baitus užimantys simboliai yra labai reti (juos ir UTF-16 koduoja ne dviem, o keturiais baitais).
5 baitų ir 6 baitų simbolius numatė pradinė specifikacija, bet 2003 m. lapkričio RFC 3629 dokumentas apribojo UTF-8 simbolius iki 4 baitų.
Kaip ir kitoms UTF koduotėms, apie baitų tvarką galima teksto dorojimo programą galima įspėti specialia baitų tvarkos žyme, tačiau konkrečiu UTF-8, kur koduojamo teksto baitų tvarka visada vienoda, triženklė žymė naudojama tik informavimui apie pačios UTF-8 buvimą.
Simboliai, kurių Unikodo kodai mažesni už 128 (80 šešioliktainėje sistemoje) koduojami taip pat kaip ir atitinkami 7 bitų ASCII simboliai. Tam išnaudojamos visos baito reikšmės, kurių vyriausias bitas lygus 0. Taip koduojami ne vien rodomieji simboliai, bet ir eilutės pabaiga (0D) bei kiti specialūs ženklai.
Kitais atvejai prireikia iki keturių baitų. Vyriausias šių baitų bitas visada lygus 1, taip juos atskiriant nuo anksčiau minėtų ASCII ženklų.
Kodo intervalas šešioliktainis |
Reikšmė dvejetainis |
UTF-16 (big endian variantas) | UTF-8 dvejetainis |
Pastabos |
---|---|---|---|---|
000000–00007F | 0xxxxxxx | 00000000 0xxxxxxx | 0xxxxxxx | Kaip ir ASCII. Vyriausias bitas lygus 0. |
septyni x | septyni x | |||
000080–0007FF | 00000zzz zxxxxxxx | 00000zzz zxxxxxxx | 110zzzzx 10xxxxxx | pirmas baitas prasideda 110, visi kiti prasideda 10. zzzz > 0000 |
trys x, aštuoni x | penki x, šeši x | |||
000800–00FFFF | zzzzzxxx xxxxxxxx | zzzzzxxx xxxxxxxx | 1110zzzz 10zxxxxx 10xxxxxx | pirmas baitas prasideda 1110, visi kiti prasideda 10. zzzzz > 00000 |
aštuoni x, aštuoni x | keturi x, šeši x, šeši x | |||
010000–10FFFF | 000zzzzz xxxxxxxx xxxxxxxx | 110110yy yyxxxxxx 110111xx xxxxxxxx | 11110zzz 10zzxxxx 10xxxxxx 10xxxxxx | UTF-16 „pakeičianti pora“, yyyy = zzzzz – 1, zzzzz > 00000. Šiuo atveju UTF-8 bitų reikšmės lygiai tokios pat kaip ir Unicode. |
du x, aštuoni x, du x, aštuoni x | trys x, šeši x, šeši x, šeši x |
Raidė aleph (א), Unicode kodas U+05D0, koduojamas UTF-8 tokiu būdu:
Kiti pavyzdžiai:
Pavyzdys | Unikodas | Unikodinis dvejetainis | UTF-8 dvejetainis | UTF-8 šešioliktainis |
---|---|---|---|---|
Raidė y | U+0079 | 00000000 01111001 | 01111001 | 79 |
Vokiška raidė ä | U+00E4 | 00000000 11100100 | 11000011 10100100 | C3 A4 |
Ženklas registered-trademark ® | U+00AE | 00000000 10101110 | 11000010 10101110 | C2 AE |
Euro ženklas € | U+20AC | 00100000 10101100 | 11100010 10000010 10101100 | E2 82 AC |
Lietuviški šaltiniai:
Anglų kalba: