💻 TIN HỌC · LỚP 10

Unicode và UTF-8: phân biệt kí tự, mã điểm và byte

Phân biệt kí tự với code point và chuỗi byte, giải thích vì sao độ dài byte có thể khác số kí tự, đồng thời tránh lỗi mojibake khi hai hệ thống dùng sai bảng mã.

📖 Bài học⏱ 12 phút👁 0🔖 0
Đóng góp bởi Võ Trí Kỳ Nam · cập nhật 31/08/2026
Đăng nhập để học

💻 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.

Chuỗi A và chữ ế đi qua hai lớp: kí tự tới mã điểm Unicode rồi tới các byte UTF-8 có độ dài khác nhau
Code point mô tả danh tính kí tự; encoding mô tả cách lưu hoặc truyền bằng 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.
TRAO ĐỔI · HỎI ĐÁP

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é.