Tôi đang yêu cầu đếm tất cả các kết hợp hợp lệ có thể có trong Unicode kèm theo lời giải thích.
1.111.998 : 17 mặt phẳng × 65.536 ký tự trên mỗi mặt phẳng - 2048 ký tự thay thế - 66 ký tự không
Lưu ý rằng UTF-8 và UTF-32 về mặt lý thuyết có thể mã hóa hơn 17 mặt phẳng, nhưng phạm vi bị hạn chế dựa trên những hạn chế của mã hóa UTF-16 .
137.929 điểm mã thực sự được gán trong Unicode 12.1 .
Tôi cũng không hiểu tại sao các byte tiếp tục có các hạn chế mặc dù byte bắt đầu của char đó rõ ràng là bao lâu.
Mục đích của hạn chế này trong UTF-8 là làm cho mã hóa tự đồng bộ hóa .
Đối với một ví dụ ngược lại, hãy xem xét mã hóa GB 18030 của Trung Quốc . Ở đó, chữ cái ß
được biểu diễn dưới dạng chuỗi byte 81 30 89 38
, chứa bảng mã của các chữ số 0
và 8
. Vì vậy, nếu bạn có một chức năng tìm kiếm chuỗi không được thiết kế cho câu hỏi mã hóa cụ thể này, thì việc tìm kiếm chữ số 8
sẽ tìm thấy một dương tính giả trong chữ cái ß
.
Trong UTF-8, điều này không thể xảy ra, bởi vì sự không chồng chéo giữa các byte dẫn và byte phụ đảm bảo rằng mã hóa của một ký tự ngắn hơn có thể không bao giờ xảy ra trong mã hóa của một ký tự dài hơn.