Lesson 14 — String, Rune, UTF-8
Ba module tương tác để: (1) thấy byte vs rune cùng lúc trên một string, (2) thử encoder UTF-8 với từng ký tự, (3) chơi với 12 function trong package strings.
1. Byte vs Rune — cùng một string, hai cách nhìn
Nhập string bất kỳ (hoặc bấm preset). Hàng trên = byte (mỗi cell 1 byte, multi-byte char span nhiều cell). Hàng dưới = rune (mỗi cell 1 ký tự Unicode). Click cell để xem chi tiết.
0 byte (
len(s))0 rune (
utf8.RuneCountInString(s))Tỷ lệ: 1.0 byte/ký tự
Byte view (mỗi cell = 1 byte trong memory):
Rune view (mỗi cell = 1 ký tự Unicode):
Click một cell để xem chi tiết.
Cell màu xanh = byte ASCII (1 byte = 1 ký tự).
Cam viền liền = byte đầu của chuỗi multi-byte.
Vàng viền đứt = byte tiếp theo (continuation byte, bắt đầu
10xxxxxx).
Khi click rune cell, các byte tương ứng được highlight cùng.
2. UTF-8 Encoder — code point → byte sequence
Nhập 1 ký tự (rune) để xem cách UTF-8 encode nó. Quy tắc: code point 0-127 → 1 byte; 128-2047 → 2 byte; 2048-65535 → 3 byte; 65536+ → 4 byte.
| Code point range | Bit pattern UTF-8 | Số byte |
|---|---|---|
| U+0000 – U+007F (ASCII) | 0xxxxxxx | 1 |
| U+0080 – U+07FF | 110xxxxx 10xxxxxx | 2 |
| U+0800 – U+FFFF | 1110xxxx 10xxxxxx 10xxxxxx | 3 |
| U+10000 – U+10FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx | 4 |
Byte đầu cho biết tổng số byte (đếm bit
1 liền trước bit 0 đầu tiên).
Byte tiếp theo luôn bắt đầu 10 — gọi là continuation byte.
Self-synchronizing: nhìn byte ngẫu nhiên là biết nó ở đầu hay giữa chuỗi multi-byte.
3. Strings Playground — thử function thực dùng
Chọn 1 function, nhập input, xem output + code Go tương đương.
(chưa có kết quả)