UTF-8 | |
---|---|
Származékos munka | CESU-8 [d] |
Teremtő | Rob Pike és Ken Thompson |
A mű vagy cím nyelve | több nyelv [d] |
nyitás dátuma | 1992. szeptember 2. [1] |
Hivatalos oldal | unicode.org/faq/utf_bom.… |
Leírva a linkben | ibm.com/docs/en/i… ( angol) |
Az UTF-8 (az angol Unicode Transformation Format, 8-bit - „Unicode transzformációs formátum, 8 bites”) egy általános karakterkódolási szabvány , amely lehetővé teszi Unicode karakterek kompaktabb tárolását és továbbítását változó számú bájt használatával (a 1–4), és teljes mértékben visszafelé kompatibilis a 7 bites ASCII kódolással . Az UTF-8 szabványt az RFC 3629 és az ISO/IEC 10646 D melléklet formalizálja.
Az UTF-8 kódolás most domináns a webes térben. A UNIX-szerű operációs rendszerekben is széles körben alkalmazták [2] .
Az UTF-8 formátumot 1992. szeptember 2-án fejlesztette ki Ken Thompson és Rob Pike , és a 9. tervben valósították meg [3] . A Windows kódolási azonosítója 65001 [4] .
Az UTF-8, az UTF-16- hoz képest , a legnagyobb tömörítési előnyt nyújtja a latin szövegeknél , mivel a diakritikus latin betűket , számokat és a leggyakoribb írásjeleket az UTF-8 csak egy bájttal kódolja, és ezeknek a karaktereknek a kódja megfelelnek az ASCII - beli kódjaiknak . [5] [6]
Az UTF-8 kódolási algoritmusa az RFC 3629 szabványban van szabványosítva, és 3 szakaszból áll:
1. Határozza meg a karakter kódolásához szükséges oktett ( bájt ) számát. A karakterszám a Unicode szabványból származik.
Karakterszám-tartomány | Szükséges számú oktett |
---|---|
00000000-0000007F | egy |
00000080-000007FF | 2 |
00000800-0000FFFF | 3 |
00010000-0010FFFF | négy |
U+0000A tól -ig számokat tartalmazó Unicode karakterek esetében U+007F(amelyek egy bájtot foglalnak el nullával a legjelentősebb bitben) az UTF-8 kódolás teljes mértékben megfelel a 7 bites US-ASCII kódolásnak.
2. Állítsa be az első oktett magas bitjeit az első lépésben meghatározott szükséges számú oktettnek megfelelően:
Ha egynél több oktettre van szükség a kódoláshoz, akkor a 2-4 oktettben a két legjelentősebb bit mindig 10 2 (10xxxxxx) lesz. Ez megkönnyíti az első oktett megkülönböztetését az adatfolyamban, mivel a magas bitjei soha nem 10 2 .
Nyoltok száma | Jelentős darabok | Minta |
---|---|---|
egy | 7 | 0xxxxxxx |
2 | tizenegy | 110xxxxx 10xxxxxx |
3 | 16 | 1110xxxx 10xxxxxx 10xxxxxx |
négy | 21 | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
3. Állítsa be az oktettek szignifikáns bitjeit úgy, hogy azok megfeleljenek a binárisan kifejezett Unicode karakterszámnak. Kezdje a kitöltést a karakterszám alacsony bitjeiről, helyezze azokat az utolsó oktett alacsony bitjébe, és folytassa jobbról balra az első oktettig. Az első oktett szabad bitjei, amelyek használaton kívül maradnak, nullákkal vannak feltöltve.
Szimbólum | Bináris karakterkód | UTF-8 binárisan | UTF-8 hexadecimális formában | |
---|---|---|---|---|
$ | 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 |
Annak jelzésére, hogy egy fájl vagy adatfolyam Unicode-karaktereket tartalmaz, egy bájtsorrend-jelet (BOM) lehet beilleszteni a fájl vagy adatfolyam elejére , amely UTF -8-as kódolás esetén három bájtból áll : . EF BB BF16
1. bájt | 2. bájt | 3. bájt | |
---|---|---|---|
bináris kód | 1110 1111 | 1011 1011 | 1011 1111 |
Hex kód | EF | BB | BF |
Kezdetben az UTF-8 kódolás legfeljebb hat bájtot engedélyezett egyetlen karakter kódolásához, de 2003 novemberében az RFC 3629 megtiltotta az ötödik és hatodik bájt használatát, és a kódolt karakterek tartománya a karakterre korlátozódott U+10FFFF. Ez az UTF-16-tal való kompatibilitás biztosítása érdekében történt.
Nem minden bájtsorozat érvényes. Az UTF-8 dekódernek meg kell értenie és megfelelően kezelnie kell az alábbi hibákat:
Karakterkódolások | |
---|---|
Történelmi kódolások | kiegészítő komp. szemafor (Makarov) morze Bodo MTK-2 comp. 6 bites SCP RADIX-50 EBCDIC KOI-7 ISO 646 |
modern 8 bites megjelenítés | szimbólumok ASCII nem ASCII 8 bites kódlapok cirill betűs KOI-8 Alapvető kódolás MacCyrillic ISO 8859 1 (lat.) 2 3 négy 5 (kir.) 6 7 nyolc 9 tíz tizenegy 12 13 tizennégy 15 (€) 16 ablakok 1250 1251 (kir.) 1252 1253 1254 1255 1256 1257 1258 WGL4 IBM és DOS 437 850 852 855 866 "alternatív" MIC |
Többbájt | hagyományos DBCS GB2312 HTML unicode UTF-32 UTF-16 UTF-8 karakterlista cirill betűs |
felhasználói felület billentyűzetkiosztás locale soros fordítás betűtípus transzliteráció egyedi betűtípusok segédprogramok ikonv rekord |
sorozatosítása | Digitális adatformátumok|
---|---|
Szöveg | |
Internet és távközlés |
|
Média | |
Egyéb |