Jika Anda tertarik pada bagaimana karakter disimpan, Anda dapat mengunjungi www.unicode.org dan melihat-lihat. Di bagian atas halaman utama mereka adalah tautan "Daftar Kode" yang menunjukkan semua kode karakter yang tersedia di Unicode.
Secara keseluruhan, ada sedikit lebih dari satu juta kode yang tersedia di Unicode (tidak semuanya digunakan). Satu byte dapat menampung 256 nilai yang berbeda, jadi Anda akan membutuhkan tiga byte jika Anda ingin menyimpan setiap kode Unicode yang mungkin.
Sebaliknya, Unicode biasanya disimpan dalam pengkodean "UTF-8" yang menggunakan byte lebih sedikit untuk beberapa karakter dan lebih banyak untuk yang lain. 128 nilai kode pertama disimpan dalam satu byte, hingga nilai kode 2048 pertama disimpan dalam dua byte, hingga 65536 disimpan dalam tiga byte, dan sisanya mengambil empat byte. Ini telah diatur sehingga nilai kode yang digunakan lebih sering mengambil lebih sedikit ruang. AZ, az, 0-9 dan! @ $% ^ & * () - [} {}; ': "|,. / <>? Dan beberapa yang saya lupa ambil satu byte; hampir semua bahasa Inggris, 98% dari Jerman dan Prancis (hanya menebak) dapat disimpan dalam satu byte per karakter, dan ini adalah karakter yang paling banyak digunakan. Sirilik, Yunani, Ibrani, Arab dan beberapa lainnya menggunakan dua byte per karakter. Bahasa India, sebagian besar Cina, Jepang , Korea, Thailand, banyak simbol matematika, dapat ditulis dalam tiga byte per karakter. Hal-hal yang jarang (jika Anda ingin menulis teks dalam Linear A atau Linear B, Emoji) membutuhkan empat byte.
Pengkodean lainnya adalah UTF-16. Segala sesuatu yang membutuhkan 1, 2 atau 3 byte dalam UTF-8 membutuhkan dua byte dalam UTF-16. Itu keuntungan jika Anda memiliki teks Cina atau Jepang dengan sangat sedikit karakter latin di antaranya.
Tentang alasan desain UTF-8: Ini memiliki beberapa keunggulan dibandingkan desain lainnya. Mereka:
Kompatibilitas dengan karakter US-ASCII
Kekompakan yang wajar
Sinkronisasi sendiri: Ini berarti bahwa jika Anda diberikan bagian dari urutan byte yang merupakan karakter dalam pengkodean UTF-8, Anda dapat mengetahui di mana karakter dimulai. Dalam beberapa pengkodean, baik xy dan yx bisa menjadi pengkodean karakter yang valid, jadi jika Anda diberikan bagian dari urutan ... xyxyxyxyxyxyxy ... Anda tidak dapat mengetahui karakter apa yang Anda miliki.
Mengurutkan kebenaran: Jika Anda mengurutkan string yang mengandung karakter yang dikodekan UTF-8 berdasarkan nilai byte mereka, maka mereka secara otomatis diurutkan dengan benar sesuai dengan nilai Unicode mereka.
Kompatibel dengan kode byte tunggal: Sebagian besar kode yang mengasumsikan nilai byte tunggal berfungsi secara otomatis dengan karakter yang dikodekan UTF-8.
Ditambah alasan apa pun yang saya lupa.