Beruntung bahasa Indonesia bisa dituliskan dalam huruf-huruf latin yang semuanya ada dalam keyboard. Atau dalam istilah charset-nya, bahasa Indonesia bisa direpresentasikan seluruhnya dalam ASCII. Lain halnya kalau kita ingin menuliskan bahasa Arab, Cina, atau membuat lambang matematika tertentu seperti pi, kemana kita harus mencari huruf atau lambang bahasa-bahasa tersebut dalam keyboard?
Coba kita tuliskan huruf-huruf aneh berikut ini: ‘ ’ — π × { } © 佈 б. Anda boleh menggunakan notepad, Visual Studio, atau Ms Word. Kalau Anda kesulitan menuliskannya, cukup copy paste saja dari web ini. Setelah itu coba di save. Jika Anda menggunakan notepad, by default akan disimpan dalam encoding ANSI, dan notepad akan memberi peringatan bahwa dokumen yang akan disimpan mengandung format unicode, dengan menyimpannya ke format ANSI maka informasi unicode akan hilang.
Wah, terus apa itu ANSI? ANSI sebenarnya adalah sebuah organisasi di Amerika yang mengurusi standard produk mereka. Tetap, istilah ANSI yang di referensi oleh notepad berarti karakter set yang merupakan extended ASCII. Nah, terus apa itu ASCII?
ASCII adalah encoding yang merepresentasikan setiap karakter sebagai 8 bit, untuk menuliskan huruf, angka, dan tanda baca standard dalam bahasa inggris. ASCII sebenarnya hanya menggunakan 7 bit dari 8 bit yang disediakan. Hal ini memungkinkan ASCII untuk di extend. Nah, versi extension ASCII inilah yang jumlahnya banyak, termasuk ANSI dan ISO-8859-1.
ANSI versi Windows, disebut juga Windows-1252 adalah extended ASCII yang di-submit oleh Microsoft ke organisasi ANSI untuk dijadikan standard. Namun ANSI sendiri tidak pernah menetapkannya sebagai standard. Walaupun demikian sebutan ANSI sudah terlanjut melekat kepada spesifikasi Microsoft tersebut sehingga referensi terhadap standard tersebut masih disebut sebagai ANSI.
ISO-8859-1 adalah salah satu variant dari standard ISO-8859. Sama seperti Microsoft ANSI, ISO-8859 adalah versi extended dari ASCII, dengan memanfaatkan bit ke 8 untuk menyimpan karakter-karakter yang terdapat dalam bahasa-bahasa Eropa selain bahasa inggris.
Baik Windows ANSI maupun ISO-8859-1 masih merepresentasikan karakter sebagai 8 bit. Nah, 8 bit memang masih bisa merepresentasikan karakter standard dalam bahasa inggris, bahasa Indonesia dan beberapa bahasa eropa yang lain, namun tidak cukup untuk merepresentasikan karakter dalam bahasa lain yang jumlah karakternya melebih representasi 8 bit, misalnya tulisan Cina. Dengan 8 bit, jumlah karakter maksimal yang masih bisa direpresentasikan adalah 256.
Nah, kemudian timbulah istilah unicode. Dengan unicode kita bisa merepresentasikan karakter dalam bahasa apa pun karena spesifikasi unicode membolehkan representasi karakter sampai dengan 32 bit. Dengan 32 bit, jumlah karakter maksimal yang bisa direpresentasikan adalah 4.294.967.296. Suatu jumlah yang sangat banyak, dan sangat cukup untuk merepresentasikan karakter dalam bahasa mana pun.
Namun, merepresentasikan sebuah karakter dalam 32 bit tentu memerlukan tempat penyimpanan yang cukup besar. Padahal kebanyakan karakter ditulis dalam bahasa inggris maupun bahasa-bahasa lain yang menggunakan karakter latin, sebuah karakter kebanyakan bisa direpresentasikan sebagai 7 atau 8 bit. Oleh karena itulah timbul istilah encoding.
Encoding adalah suatu cara untuk merepresentasikan sebuah karakter sebagai susunan bit. Dengan spesifikasi unicode, kita bisa memilih beberapa macam encoding yang ada: UTF-7, UTF-8, UTF-16, dan UTF-32. UTF-7 dan UTF-8 bisa menampilkan karakter yang bisa direpresentasikan dengan ASCII sebagai 8 bit, dan karakter lainnya bisa ditampilkan dengan representasi 16 s/d 32 bit. UTF-16 bisa merepresentasikan karakter dengan 16 s/d 32 bit. Sedangkan UTF-32 selalu merepresentasikan karakter dengan 32 bit.
Dari ke-empat encoding yang saya sebutkan di atas, yang banyak digunakan adalah UTF-8. Hal ini karena UTF-8 bisa seefisien ASCII apabila karakter yang hendak ditampilkan bisa direpresentasikan dengan 8 bit, namun masih bisa menggunakan bit yang lebih lebar untuk karakter-karakter yang lain. UTF-7 sebenarnya memiliki kemampuan yang sama namun terdapat beberapa perbedaan, dan kelihatannya UTF-8 lebih banyak dipakai daripada UTF-7.