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 rangeBit pattern UTF-8Số byte
U+0000 – U+007F (ASCII)0xxxxxxx1
U+0080 – U+07FF110xxxxx 10xxxxxx2
U+0800 – U+FFFF1110xxxx 10xxxxxx 10xxxxxx3
U+10000 – U+10FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx4
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ả)