Komputer tidak menyimpan huruf. Yang tersimpan di berkas, di memori, dan di kabel jaringan adalah byte: bilangan bulat 0 sampai 255. Encoding adalah tabel kesepakatan yang memetakan karakter menjadi byte dan sebaliknya. Tanpa mengetahui encoding yang dipakai, sederet byte tidak punya arti tunggal: angka yang sama dapat dibaca sebagai huruf yang berbeda oleh dua program.
Tiga lapis yang sering tertukar
| Lapis | Contoh untuk huruf e beraksen | Yang menghitungnya di Python |
|---|---|---|
| Karakter | é | len(teks) |
| Titik kode (code point) | U+00E9 | ord(karakter) |
| Byte pada UTF-8 | C3 A9 | len(teks.encode("utf-8")) |
Unicode memberi nomor kepada setiap karakter yang dipakai manusia: aksara Latin, Arab, Han, Jawa, tanda baca, sampai lambang mata uang. Nomor itu disebut titik kode dan ditulis U+ diikuti bilangan heksadesimal. Titik kode bersifat abstrak; encoding-lah yang menentukan berapa byte dipakai untuk menuliskannya.
kota = "Ciwidéy"
print(len(kota)) # 7 karakter
print(len(kota.encode("utf-8"))) # 8 byte
print(ord("é")) # 233, yaitu U+00E9Bedanya terasa di pekerjaan sehari-hari. Kolom basis data yang dibatasi 50 boleh jadi menghitung byte, bukan huruf, sehingga alamat beraksen tertolak padahal terlihat pendek. Layanan pesan yang membatasi 160 karakter memotong isi lebih cepat saat ada lambang di dalamnya. Ukuran berkas ekspor pun tidak sama dengan jumlah huruf di dalamnya.