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,[1][2] 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.[3] Konsortium Mel Internet (Internet Mail Consortium, IMC) mencadangkan agar semua program e-mel mampu memaparkan dan menghasilkan mel dengan UTF-8.[4]

Huraian sunting

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 sunting

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 sunting

  1. ^ "Moving to Unicode 5.1". Official Google Blog. May 5, 2008. Dicapai pada 2008-05-08.
  2. ^ "Usage of character encodings for websites". W3Techs. Dicapai pada 2009-09-25.
  3. ^ Alvestrand, H. (1998), "IETF Policy on Character Sets and Languages", RFC 2277, Internet Engineering Task Force
  4. ^ "Using International Characters in Internet Mail". Internet Mail Consortium. August 1, 1998. Diarkibkan daripada yang asal pada 2007-10-26. Dicapai pada 2007-11-08.

Templat:Character encoding