Một byte tiếp tục trong UTF-8 là bất kỳ byte nào trong đó hai bit trên cùng là 10
.
Chúng là các byte tiếp theo trong chuỗi nhiều byte. Bảng sau đây có thể giúp:
Unicode code points Range Encoding Binary value
------------------- -------- --------------------------
U+000000-U+00007f 0xxxxxxx 0xxxxxxx
U+000080-U+0007ff 110yyyxx 00000yyy xxxxxxxx
10xxxxxx
U+000800-U+00ffff 1110yyyy yyyyyyyy xxxxxxxx
10yyyyxx
10xxxxxx
U+010000-U+10ffff 11110zzz 000zzzzz yyyyyyyy xxxxxxxx
10zzyyyy
10yyyyxx
10xxxxxx
Tại đây bạn có thể xem cách mã Unicode trỏ ánh xạ tới chuỗi byte nhiều byte UTF-8 và giá trị nhị phân tương đương của chúng.
Các quy tắc cơ bản là thế này:
- Nếu một byte bắt đầu với một chút
0
, đó là một giá trị byte đơn ít hơn 128.
- Nếu nó bắt đầu với
11
, đó là byte đầu tiên của một đa -byte chuỗi và số lượng các bit 1
lúc bắt đầu cho biết tổng số byte có trong tổng số (110xxxxx
có hai byte, 1110xxxx
có ba và 11110xxx
có bốn).
- Nếu bắt đầu bằng
10
, đó là một byte tiếp tục.
Sự khác biệt này cho phép xử lý khá tiện lợi như có thể sao lưu từ bất kỳ một byte nào để tìm byte đầu tiên của điểm mã đó. Chỉ cần tìm kiếm ngược cho đến khi bạn tìm thấy một không bắt đầu với các bit 10
.
Tương tự, nó cũng có thể được sử dụng cho UTF-8 strlen
bằng cách chỉ đếm số không 10xxxxxx
byte.
Có vẻ như ai đó vừa chỉnh sửa bài viết trên Wikipedia. (: – tripleee