💻 Kí tự không đồng nhất với một byte
Unicode gán mã điểm cho các kí tự và kí hiệu; UTF-8 là một cách mã hóa các mã điểm thành từ một đến bốn byte. Chữ ASCII cơ bản dùng một byte trong UTF-8, còn nhiều chữ tiếng Việt dùng nhiều byte.
Ba lớp cần tách
- Grapheme: đơn vị người dùng cảm nhận như một kí tự hiển thị.
- Code point: số trong không gian Unicode; một grapheme đôi khi gồm nhiều code point.
- Byte: đơn vị lưu trữ; UTF-8 dùng số byte thay đổi.
Vì sao xuất hiện chữ lỗi?
Mojibake xảy ra khi byte được tạo theo một encoding nhưng bị giải mã theo encoding khác. Cần khai báo và dùng UTF-8 nhất quán ở tệp, kết nối, cơ sở dữ liệu và HTTP; không sửa bằng cách thay ngẫu nhiên các kí tự đã lỗi.
⚠️ Đếm độ dài đúng mục đích
Giới hạn dung lượng cần đếm byte; giới hạn văn bản cho người dùng nên cân nhắc grapheme. Hàm đếm byte có thể trả kết quả lớn hơn số chữ nhìn thấy, đặc biệt với tiếng Việt và emoji.
📚 Căn cứ biên soạn
- Chương trình GDPT 2018.
- Mạch kiến thức Kết nối tri thức với cuộc sống lớp 10 và Quyết định 3588/QĐ-BGDĐT.
- Nội dung biên soạn độc lập, chú trọng kiểm tra bằng chứng, điều kiện áp dụng và giới hạn suy luận.
Cùng nhau hiểu bài sâu hơn
Viết lời giải, công thức, đặt câu hỏi hoặc gửi ảnh phần bạn đang vướng.
Đăng nhập để đặt câu hỏi và tham gia trao đổi.
Chưa có trao đổi nào. Hãy là người đầu tiên đặt câu hỏi nhé.