Theo bài viết trên Wikipedia , UTF-8 có định dạng này:
Mã đầu tiên Mã cuối Byte Byte 1 Byte 2 Byte 3 Byte 4 điểm được sử dụng U + 0000 U + 007F 1 0xxxxxxx U + 0080 U + 07FF 2 110xxxxx 10xxxxxx U + 0800 U + FFFF 3 1110xxxx 10xxxxxx 10xxxxxx U + 10000 U + 1FFFFF 4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx x có nghĩa là bit này được sử dụng để chọn điểm mã.
Điều này làm lãng phí hai bit trên mỗi byte tiếp tục và một bit trong byte đầu tiên. Tại sao UTF-8 không được mã hóa như sau?
Mã đầu tiên Mã cuối Byte Byte 1 Byte 2 Byte 3 điểm được sử dụng U + 0000 U + 007F 1 0xxxxxxx U + 0080 U + 3FFF 2 10xxxxxx xxxxxxxx U + 0800 U + 1FFFFF 3 110xxxxx xxxxxxxx xxxxxxxx
Nó sẽ lưu một byte khi điểm mã nằm ngoài Mặt phẳng đa ngôn ngữ cơ bản hoặc nếu điểm mã nằm trong phạm vi [U + 800, U + 3FFF].
Tại sao UTF-8 không được mã hóa theo cách hiệu quả hơn?