Movatterモバイル変換


[0]ホーム

URL:


Pereiti prie turinio
VikipedijaLaisvoji enciklopedija
Paieška

UTF-8

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.

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 prieUTF-16 koduotės.

Techninės charakteristikos

[redaguoti |redaguoti vikitekstą]

UTF-8 yra Unikodo tipo koduotė, kurioje vienam simboliui skiriama nuo 1 baito iki 4 baitų.

Po1 baitą užima Angliškos abėcėlės simboliai, skaičiai, skyrybos ženklai. Taip koduojami 128 simboliai, kurių kodai priklausoASCII koduotei, Unikode užimančiai sritį nuo U+0000 iki U+007F.

Po2 baitus užima išplėstiniai lotyniški rašmenys (irlietuviškos raidės),graikų,armėnų,koptų,hebrajų irarabų abėcėlių beikirilicos raidės.

Po3 baitus užima raidės kitų rašto sistemų (japonų,kinų, kitų Azijos tautų).

Po4 baitus užimantys simboliai yra labai reti (juos irUTF-16 koduoja ne dviem, o keturiais baitais).

5 baitų ir6 baitų simbolius numatė pradinė specifikacija, bet 2003 m. lapkričioRFC 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 specialiabaitų 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ą.

Kodavimo algoritmas

[redaguoti |redaguoti vikitekstą]

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–00007F0xxxxxxx00000000 0xxxxxxx0xxxxxxxKaip ir ASCII. Vyriausias bitas lygus 0.
septyni xseptyni x
000080–0007FF00000zzz zxxxxxxx00000zzz zxxxxxxx110zzzzx 10xxxxxxpirmas baitas prasideda 110, visi kiti prasideda 10. zzzz > 0000
trys x, aštuoni xpenki x, šeši x
000800–00FFFFzzzzzxxx xxxxxxxxzzzzzxxx xxxxxxxx1110zzzz 10zxxxxx 10xxxxxxpirmas baitas prasideda 1110, visi kiti prasideda 10. zzzzz > 00000
aštuoni x, aštuoni xketuri x, šeši x, šeši x
010000–10FFFF000zzzzz xxxxxxxx xxxxxxxx110110yy yyxxxxxx 110111xx xxxxxxxx11110zzz 10zzxxxx 10xxxxxx 10xxxxxxUTF-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 xtrys x, šeši x, šeši x, šeši x

Pavyzdžiai

[redaguoti |redaguoti vikitekstą]

Raidėaleph (א), Unicode kodas U+05D0, koduojamas UTF-8 tokiu būdu:

  • Jis priklauso intervalui nuo U+0080 iki U+07FF. Iš lentelės matyti, jog toks simbolis turi būti koduojamas dviem baitais,110xxxxx ir10xxxxxx.
  • šešioliktainis skaičius 05D0dvejetaine sistema užrašomas kaip 101 1101 0000.
  • Šie vienuolika bitų užima x pažymėtas pozicijas: 11010111 10010000.
  • Galutinis rezultatas yra du baitai, D7 ir 90 (abu užrašyti šešioliktaine sistema). Tai ir yraalef raidės UTF-8 kodas.

Kiti pavyzdžiai:

PavyzdysUnikodasUnikodinis dvejetainisUTF-8 dvejetainisUTF-8 šešioliktainis
RaidėyU+007900000000 011110010111100179
Vokiška raidėäU+00E400000000 111001001100001110100100C3 A4
Ženklasregistered-trademark®U+00AE00000000 101011101100001010101110C2 AE
Euro ženklasU+20AC00100000 10101100111000101000001010101100E2 82 AC

Koduotės UTF-8 privalumai

[redaguoti |redaguoti vikitekstą]
  • Lotyniškos (anglų kalbos) raidės bei pagrindiniai skyrybos ženklai vienu baitu koduojami taip pat, kaip irASCII bei daugeliu paplitusių senesnių koduočių. Todėl tokie rašmenys teisingai atvaizduojami senesnių programų, kurios nenumato Unikodo panaudojimo.
  • Jei didžioji dalis simbolių koduojami vienu baitu, UTF-8 koduote saugomas tekstas užima žymiai mažiau vietos, neiUTF-16 (USC-2) koduote.
  • Šiai koduotei įmanoma pritaikytiblogo simbolio taisyklės paieškos algoritmą.
  • Bent kiek ilgesnę UTF-8 eilutę nesunku atpažinti. Kitaip tariant, tikimybė, jog teisingai UTF-8 koduotės požiūriu atrodanti baitų seka iš tiesų slepia kaip nors kitaip koduotą tekstą yra menka. Pavyzdžiui, baitai C0, C1, ir nuo F5 iki FF UTF-8 dokumente niekada nesutinkami.
  • Nors simbolių ribos nėra visiškai akivaizdžios, palyginus su kitomis koduotėmis jos randamos gana lengvai.
  • Baitų seka, koduojanti vieną simbolį, niekada nėra sekos, koduojančios kokį nors kitą simbolį, dalis. Pavyzdžiui, minėtiemsASCII rašmenims koduoti skirti baitai ir koduoja vien tik ASCII rašmenis.
  • Iš pirmojo simbolio baito akivaizdu, kiek baitų yra skirta simboliui koduoti.
  • Kodavimas nereikalauja palyginus lėtų daugybos ar dalybos operacijų (anksčiau naudotamUTF-1 jos buvo reikalingos).

Koduotės UTF-8 trūkumai

[redaguoti |redaguoti vikitekstą]
  • Jei teksto didžiąją dalį sudaro Azijos kalbų rašmenys UTF-8 koduotas tekstas užims daugiau vietos.
  • Teksto eilutei skiriamas baitų skaičius priklauso ne tik nuo ženklų skaičiaus, bet ir nuo turinio, tai yra nuo to, kiek baitų skiriama rašmenims koduoti. Dėl to pagalbaitų skaičių neįmanoma nustatyti eilutės ilgio, o senosios programos, kurios eilutės ilgį nustato pagalbaitų skaičių, klaidingai atvaizduoja tekstą (pvz., „sugriūva“ tekstinės lentelės).
  • Koduotė reikalauja perduoti visus aštuonis baito bitus. Alternatyvi koduotėUTF-7 reikalauja perduoti tik pirmus septynis bitus, kurių pakako ir ASCII. Kai kuri duomenų perdavimo įranga aštuntą bitą naudoja savo specialiems tikslams ir UTF-8 užkoduoto teksto tiesiogiai perduoti negali.

Nuorodos

[redaguoti |redaguoti vikitekstą]

Lietuviški šaltiniai:

Anglų kalba:

Rodomas puslapis "https://lt.wikipedia.org/w/index.php?title=UTF-8&oldid=6841695"
Kategorija:
Paslėptos kategorijos:

[8]ページ先頭

©2009-2026 Movatter.jp