Semua karakter dalam ASCII dapat dikodekan menggunakan UTF-8 tanpa peningkatan penyimpanan (keduanya membutuhkan byte penyimpanan).
UTF-8 memiliki manfaat tambahan dukungan karakter di luar "ASCII-karakter". Jika itu yang terjadi, mengapa akan kita pernah memilih ASCII encoding lebih UTF-8?
Apakah ada use case ketika kita akan memilih ASCII bukan UTF-8?
character-encoding
utf-8
ascii
Pacerier
sumber
sumber
Jawaban:
Dalam beberapa kasus dapat mempercepat akses ke karakter individu. Bayangkan string yang
str='ABC'
dikodekan dalam UTF8 dan ASCII (dan dengan asumsi bahwa bahasa / kompiler / database tahu tentang pengkodean)Untuk mengakses
C
karakter ketiga ( ) dari string ini menggunakan operator akses-array yang ditampilkan dalam banyak bahasa pemrograman Anda akan melakukan sesuatu sepertic = str[2]
.Sekarang, jika string dikodekan ASCII, yang perlu kita lakukan adalah mengambil byte ketiga dari string.
Namun, jika string dikodekan UTF-8, kita harus terlebih dahulu memeriksa apakah karakter pertama adalah karakter satu atau dua byte, maka kita perlu melakukan pemeriksaan yang sama pada karakter kedua, dan hanya dengan begitu kita dapat mengakses karakter ketiga. Perbedaan kinerja akan semakin besar, semakin lama string.
Ini adalah masalah misalnya di beberapa mesin database, di mana untuk menemukan awal kolom ditempatkan 'setelah' UTF-8 disandikan VARCHAR, database tidak hanya perlu memeriksa berapa banyak karakter yang ada di bidang VARCHAR, tetapi juga bagaimana banyak byte yang digunakan masing-masing.
sumber
Jika Anda hanya akan menggunakan subset US-ASCII (atau ISO 646) dari UTF-8, maka tidak ada keuntungan nyata untuk satu atau yang lain; pada kenyataannya, semuanya dikodekan secara identik.
Jika Anda akan melampaui rangkaian karakter US-ASCII, dan menggunakan (misalnya) karakter dengan aksen, umlaut, dll., Yang digunakan dalam bahasa Eropa barat yang khas, maka ada perbedaan - sebagian besar masih dapat dikodekan dengan satu byte dalam ISO 8859, tetapi akan membutuhkan dua atau lebih byte ketika dikodekan dalam UTF-8. Ada juga, tentu saja, kerugian: ISO 8859 mengharuskan Anda menggunakan beberapa cara keluar dari band untuk menentukan pengkodean yang digunakan, dan itu hanya mendukung satudari bahasa-bahasa ini sekaligus. Misalnya, Anda dapat menyandikan semua karakter alfabet Cyrillic (Rusia, Belorusia, dll.) Hanya menggunakan satu byte saja, tetapi jika Anda perlu / ingin mencampurnya dengan karakter Prancis atau Spanyol (selain yang ada di AS-ASCII / ISO 646 subset) Anda kurang beruntung - Anda harus benar-benar mengubah set karakter untuk melakukan itu.
ISO 8859 benar-benar hanya berguna untuk huruf Eropa. Untuk mendukung sebagian besar huruf yang digunakan di sebagian besar huruf Cina, Jepang, Korea, Arab, dll., Anda harus menggunakan beberapa penyandian yang sama sekali berbeda. Beberapa di antaranya (Misalnya, Shift JIS untuk Jepang) sangat menyakitkan untuk dihadapi. Jika ada kemungkinan Anda ingin mendukung mereka, saya akan menganggap perlu menggunakan Unicode untuk berjaga-jaga.
sumber
ANSI dapat berupa banyak hal, sebagian besar merupakan rangkaian karakter 8 bit dalam hal ini (seperti kode halaman 1252 di Windows).
Mungkin Anda memikirkan ASCII yang 7-bit dan bagian yang tepat dari UTF-8. Yaitu setiap aliran ASCII yang valid juga merupakan aliran UTF-8 yang valid.
Jika Anda berpikir tentang rangkaian karakter 8-bit, satu keuntungan yang sangat penting adalah bahwa semua karakter yang dapat diwakili adalah 8-bit tepatnya, di mana dalam UTF-8 mereka dapat mencapai 24 bit.
sumber
Ya, masih ada beberapa kasus penggunaan di mana ASCII masuk akal: format file dan protokol jaringan . Secara khusus, untuk penggunaan di mana:
Dengan menggunakan ASCII sebagai encoding Anda, Anda menghindari kerumitan multi-byte encoding sambil mempertahankan setidaknya beberapa keterbacaan manusia.
Beberapa contoh:
IDAT
berarti "data gambar", danPLTE
berarti "palet".Tentu saja Anda perlu berhati-hati bahwa data benar - benar tidak akan disajikan kepada pengguna akhir, karena jika itu akhirnya terlihat (seperti yang terjadi dalam kasus URL), maka pengguna dengan benar akan mengharapkan data tersebut menjadi dalam bahasa yang bisa mereka baca.
sumber
Pertama-tama: judul Anda menggunakan / d ANSI, sedangkan dalam teks Anda merujuk ASCII. Harap dicatat bahwa ANSI tidak sama dengan ASCII. ANSI menggabungkan set ASCII. Tetapi set ASCII terbatas pada 128 nilai numerik pertama (0 - 127).
Jika semua data Anda terbatas pada ASCII (7-bit), tidak masalah apakah Anda menggunakan UTF-8, ANSI atau ASCII, karena ANSI dan UTF-8 sesuai dengan set ASCII lengkap. Dengan kata lain: nilai numerik 0 hingga dan termasuk 127 mewakili karakter yang sama persis di ASCII, ANSI dan UTF-8.
Jika Anda memerlukan karakter di luar rangkaian ASCII, Anda harus memilih penyandian. Anda bisa menggunakan ANSI, tetapi kemudian Anda mengalami masalah dari semua halaman kode yang berbeda. Buat file di mesin A dan baca di mesin B mungkin / akan menghasilkan teks yang tampak lucu jika mesin ini diatur untuk menggunakan halaman kode yang berbeda, sederhana karena nilai numerik nnn mewakili karakter yang berbeda di halaman kode ini.
"Halaman kode ini" adalah alasan mengapa standar Unicode didefinisikan. UTF-8 hanyalah satu pengkodean standar itu, ada banyak lagi. UTF-16 menjadi yang paling banyak digunakan karena merupakan pengodean asli untuk Windows.
Jadi, jika Anda perlu mendukung apa pun di luar 128 karakter set ASCII, saran saya adalah menggunakan UTF-8 . Dengan begitu, itu tidak masalah dan Anda tidak perlu khawatir dengan halaman kode mana pengguna Anda telah mengatur sistem mereka.
sumber