Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
UTF-8
(
Universal Character Set (UCS)
Transformation Format — 8-bit
[1]
) adalah sebuah pengkodean karakter dengan lebar variabel tertentu (
variable-width encoding
) yang mewakili setiap karakter komputer (
character
) dalam himpunan karakter
Unicode
. Didesain untuk
backward compatibility
dengan
ASCII
dan untuk menghindari komplikasi
endianness
dan
byte order mark
dalam
UTF-16
dan
UTF-32
.
UTF-8 telah menjadi metode
pengkodean karakter
(
character encoding
) yang dominan untuk
World Wide Web
, meliputi lebih dari setengah jumlah seluruh halaman Web.
[2]
[3]
[4]
Internet Engineering Task Force
(IETF) mengharuskan semua
protokol
Internet
untuk mengidentifikasi
encoding
yang dipakai untuk data karakter, dan pengkodean karakter yang didukung (
supported character encoding
) untuk menyertakan UTF-8.
[5]
Internet Mail Consortium
(IMC) merekomendasi seluruh program e-mail dapat menayangkan dan membuat e-mail menggunakan UTF-8.
[6]
UTF-8 juga terus meningkat penggunaannya sebagai
default character encoding
dalam
sistem operasi
,
bahasa pemrograman
,
API
, dan
aplikasi perangkat lunak
.
Desain UTF-8 dapat dilihat di tabel berikut yaitu skema yang asalnya diusulkan oleh Dave Prosser dan selanjutnya dimodifikasi oleh Ken Thompson (
x
diganti dengan bit dari
code point
):
Bit
code point
|
Code point
pertama
|
Code point
terakhir
|
Byte dalam
sequence
|
Byte 1
|
Byte 2
|
Byte 3
|
Byte 4
|
Byte 5
|
Byte 6
|
7
|
U+0000
|
U+007F
|
1
|
0xxxxxxx
|
11
|
U+0080
|
U+07FF
|
2
|
110xxxxx
|
10xxxxxx
|
16
|
U+0800
|
U+FFFF
|
3
|
1110xxxx
|
10xxxxxx
|
10xxxxxx
|
21
|
U+10000
|
U+1FFFFF
|
4
|
11110xxx
|
10xxxxxx
|
10xxxxxx
|
10xxxxxx
|
26
|
U+200000
|
U+3FFFFFF
|
5
|
111110xx
|
10xxxxxx
|
10xxxxxx
|
10xxxxxx
|
10xxxxxx
|
31
|
U+4000000
|
U+7FFFFFFF
|
6
|
1111110x
|
10xxxxxx
|
10xxxxxx
|
10xxxxxx
|
10xxxxxx
|
10xxxxxx
|
Mari melihat bagaimana membuat pengkodean tanda mata uang
Euro
, €.
- 'Unicode code point
untuk "€" adalah U+20AC.
- Menurut tabel skema di atas, dibutuhkan 3
bita (
byte
)
untuk pengkodean, karena terletak di antara U+0800 dan U+FFFF.
- Kode heksadesimal
20AC
adalah sama dengan
kode biner (
binary
)
0010000010101100
. Dua angka nol di depan ditambahkan karena, seperti dalam tabel, suatu pengkodean tiga-bita (
three-byte encoding
) membutuhkan
tepat
enam belas bit dari the code point.
- Karena berupa pengkodean tiga-bita, bita pendahulu dimulai dengan tiga angka "1", kemudian satu angkat "0" (
1110
...)
- Bit sisanya dari bita ini diambil dari
code point
(
1110
0010
), menyisakan ...
000010101100
.
- Setiap kelanjutan bita dimulai dengan
10
dan dibutuhkan enam bit code point (maka
10
000010
, lalu
10
101100
).
Tiga bita
1110
0010
10
000010
10
101100
dapat ditulis lebih singkat dalam heksadesimal, sebagai
E2
82
AC
.
Tabel berikut adalah ikhtisar pengubahan ini, juga yang lain dengan panjang berbeda dalam UTF-8. Warna-warna mengindikasikan bagaiman bit dari code point didistribusikan di antara byte-byte UTF-8. Bit tambahan yang ditambahkan oleh proses encoding UTF-8 diberi warna hitam.
Karakter
|
code point
biner
|
UTF-8 biner
|
UTF-8 heksadesimal
|
$
|
U+0024
|
0100100
|
0
0100100
|
24
|
¢
|
U+00A2
|
000 10
100010
|
110
00010
10
100010
|
C2
A2
|
€
|
U+20AC
|
0010
0000 10
101100
|
1110
0010
10
000010
10
101100
|
E2
82
AC
|
??
|
U+24B62
|
000
10 0100
1011 01
100010
|
11110
000
10
100100
10
101101
10
100010
|
F0
A4
AD
A2
|
Ada beberapa definisi UTF-8 dalam berbagai dokumen standar:
- RFC 3629
/ STD 63 (2003), yang menetapkan UTF-8 sebagai elemen protokol Internet standar
- The Unicode Standard, Version 6.0
,
§3.9 D92, §3.10 D95
(2011)
- ISO/IEC 10646:2003 Annex D (2003)
Dokumen-dokumen tersebut menggantikan definisi-definisi yang telah usang dalam karya-karya berikut:
- ISO/IEC 10646-1:1993 Amendment 2 / Annex R (1996)
- The Unicode Standard, Version 5.0
, §3.9 D92, §3.10 D95 (2007)
- The Unicode Standard, Version 4.0
, §3.9?§3.10 (2003)
- The Unicode Standard, Version 2.0
, Appendix A (1996)
- RFC 2044
(1996)
- RFC 2279
(1998)
- The Unicode Standard, Version 3.0
, §2.3 (2000) plus Corrigendum #1: UTF-8 Shortest Form (2000)
- Unicode Standard Annex #27: Unicode 3.1
(2001)
Semua sama dalam mekanika umum, dengan perbedaan pokok pada topik-topik misalnya mengizinkan range nilai code point dan safe handling untuk invalid input.
Templat:Unicode navigation
Templat:Character encoding