UTF-8

UTF-8 (UCS/Format Transformasi Unicode (UTF) 8-bit) ialah pengekodan aksara panjang boleh ubah untuk Unicode, yang mampu mewakili mana-mana aksara dalam piawaian Unicode, tetapi serasi dengan ASCII. Atas sebab-sebab inilah, UTF-8 semakin diutamakan untuk pengekodan e-mel, laman web, dan apa-apa sahaja yang menyimpan atau menstrimkan aksaranya.

UTF-8 mengekodkan setiap aksara (titik kod) dalam 1 hingga 4 oktet (bait 8-bit), yang mana pengekodan satu oktet hanya digunakan untuk 128 aksara US-ASCII.

Pasukan Petugas Kejuruteraan Internt (Internet Engineering Task Force, IETF) mewajibkan semua protokol Internet mengenal pasti pengekodan yang digunakan untuk data aksara, lebih-lebih lagi pengekodan aksara yang disokong mestilah termasuk sekali UTF-8. Konsortium Mel Internet (Internet Mail Consortium, IMC) mencadangkan agar semua program e-mel mampu memaparkan dan menghasilkan mel dengan UTF-8.

Huraian
Pengekodan UTF-8 adalah berlebar boleh ubah, iaitu dari 1 hingga 4 bait. Setiap bait ada 0–4 bit satu diikuti oleh satu bit sifar untuk menandakan jenisnya. N bit satu menandakan bait pertama dalam urutan N-bait, kecuali tiada bit 1 menandakan urutan satu bait manakala satu bit 1 menandakan bait sambungan dalam urutan berbilang bait (ini dilakukan demi keserasian ASCII). Nilai skala titik kod Unicode ialah penjeraitan bit-bit bukan kawalan. Dalam jadual berikut, angka sifar dan satu mewakili bit kawalan, x mewakili 8 bit terendah dalam nilai Unicode, y mewakili 8 bit di atas x, dan z pula 8 bit di atas y.

 Unicode Bait1 Bait2 Bait3 Bait4 Contoh U+0000–U+007F 0xxxxxxx '$' U+0024→ 00100100→ 0x24 U+0080–U+07FF 110yyyxx 10xxxxxx '¢' U+00A2→ 11000010,10100010→ 0xC2,0xA2 U+0800–U+FFFF 1110yyyy 10yyyyxx 10xxxxxx '€' U+20AC→ 11100010,10000010,10101100→ 0xE2,0x82,0xAC U+10000–U+10FFFF 11110zzz 10zzyyyy 10yyyyxx 10xxxxxx '𤭢' U+024B62→ 11110000,10100100,10101101,10100010→ 0xF0,0xA4,0xAD,0xA2

Oleh itu, 128 aksara pertama (US-ASCII) cuma memerlukan satu bait. 1,920 aksara seterusnya memerlukan dua bait untuk dikodkan, termasuk huruf-huruf rumi yang bertanda diakritik dan aksara-aksara dan abjad-abjad Yunani, Cyril, Qipti, Armenia, Ibrani, Arab, Suryani dan Tāna. Tiga bait diperlukan untuk semua aksara yang lain dalam Basic Multilingual Plane (yang merangkumi hampir semua aksara yang kerap digunakan di dunia). Empat bait pula diperlukan untuk aksara-aksara dalam tahap-tahap Unicode yang lain, yang merangkumi aksara CJK yang jarang digunakan dan pelbagai tulisan bersejarah.

Dengan menyambungkan corak yang diberi di atas, bolehlah hendak menguruskan nombor-nombor yang lebih besar. Spesifikasi asal membenarkan urutan sehingga enam bait yang meliputi nombor-nombor sehingga 31 bit (had asal Set Aksara Sejagat). Namun begitu, pada November 2003, UTF-8 dihadkan oleh RFC 3629 agar hanya menggunakan liputan takrifan Unicode yang asal, iaitu U+0000 to U+10FFFF.

Dalam jadual berikut, bait-bait yang bertanda merah tidak boleh sama sekali wujud dalam urutan UTF-8 yang sah; yang bertanda hijau diwakili bait tunggal; yang bertanda putih hanya boleh wujud sebagai bait pertama dalam urutan berbilang bait; dan yang bertanda jingga hanya boleh wujud sebagai bait kedua atau selanjutnya dalam urutan berbilang bait:

 Perduaan Per-16-an Perpuluhan Catatan 00000000-01111111 00-7F 0-127 US-ASCII (bait tunggal) 10000000-10111111 80-BF 128-191 Bait kedua, ketiga atau keempat dalam urutan berbilang bait 11000000-11000001 C0-C1 192-193 Pengekodan terlalu panjang: permulaan urutan 2-bait, tetapi bertitik kod ≤ 127 11000010-11011111 C2-DF 194-223 Bermulanya urutan 2 bait 11100000-11101111 E0-EF 224-239 Bermulanya urutan 3 bait 11110000-11110100 F0-F4 240-244 Bermulanya urutan 4 bait 11110101-11110111 F5-F7 245-247 Disekat oleh RFC 3629: bermulanya urutan 4 bait untuk titik kod melebihi 10FFFF 11111000-11111011 F8-FB 248-251 Disekat oleh RFC 3629: bermulanya urutan 5 bait 11111100-11111101 FC-FD 252-253 Disekat oleh RFC 3629: bermulanya urutan 6 bait 11111110-11111111 FE-FF 254-255 Tidak sah: tidak ditakrifkan oleh spesifikasi asal UTF-8

Urutan bait tidak sah
Bukan semua urutan bait adalah UTF-8 yang sah. Sesebuah penyahkod UTF-8 harus bersedia untuk berdepan dengan:

 bait-bait bertanda merah di jadual atas
 bait sambungan yang tidak dijangka
 bait permulaan yang tidak diikuti bait sambungan yang mencukupi
 urutan yang dinyahkodkan menjadi nilai yang sepatutnya menggunakan urutan yang lebih pendek (bentuk "terlalu panjang"/"overlong").

Rujukan

Kategori:Pengekodan
Kategori:Pengekodan aksara
Kategori:Format Transformasi Unicode
Kategori:Set aksara
UTF-08

fi:Unicode#UTF-8