Representasi UTF-8 bit


4

Saya belajar tentang standar UTF-8 dan inilah yang saya pelajari:

Definition and bytes used
UTF-8 binary representation         Meaning
0xxxxxxx                            1 byte for 1 to 7 bits chars
110xxxxx 10xxxxxx                   2 bytes for 8 to 11 bits chars
1110xxxx 10xxxxxx 10xxxxxx          3 bytes for 12 to 16 bits chars
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 4 bytes for 17 to 21 bits chars

Dan saya bertanya-tanya, mengapa 2 byte kode UTF-8 tidak 10xxxxxx sebaliknya, dengan demikian mendapatkan 1 bit hingga 22 bit dengan kode UTF-8 4 byte? Seperti sekarang, 64 nilai yang mungkin hilang (dari 1000000 untuk 10111111 ). Saya tidak mencoba memperdebatkan standar, tetapi saya bertanya-tanya mengapa demikian?

** EDIT **

Bahkan, kenapa tidak

UTF-8 binary representation         Meaning
0xxxxxxx                            1 byte for 1 to 7 bits chars
110xxxxx xxxxxxxx                   2 bytes for 8 to 13 bits chars
1110xxxx xxxxxxxx xxxxxxxx          3 bytes for 14 to 20 bits chars
11110xxx xxxxxxxx xxxxxxxx xxxxxxxx 4 bytes for 21 to 27 bits chars

...?

Terima kasih!

Jawaban:


8

UTF-8 melakukan sinkronisasi sendiri. Sesuatu yang memeriksa byte dapat mengetahui apakah itu pada awal karakter UTF-8, atau sebagian melalui satu.

Katakanlah Anda memiliki dua karakter dalam skema Anda: 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Jika parser mengambil pada oktet kedua, ia tidak bisa mengatakan itu bukan untuk membaca oktet kedua dan ketiga sebagai satu karakter. Dengan UTF-8, parser dapat mengatakan bahwa ia berada di tengah karakter dan melanjutkan ke awal karakter berikutnya, sambil mengeluarkan status untuk menyebutkan simbol rusak.

Untuk edit: jika bit atas jelas, parser UTF-8 tahu bahwa mereka sedang melihat karakter yang diwakili dalam satu oktet. Jika diatur, ini adalah karakter multi-oktet.

Ini semua tentang pemulihan kesalahan dan klasifikasi oktet yang mudah.


baik. masuk akal. Terima kasih.
Yanick Rochon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.