btvn.vn
Tìm kiếm Đăng nhập

Mã kí tự: ASCII, Unicode và UTF-8

Lưu trên thiết bị này
Biểu diễn thông tin — Khoa học máy tính · Chọn bài khác

ASCII gốc và nhu cầu dùng nhiều ngôn ngữ

**ASCII gốc** dùng 7 bit, có $2^7=128$ mã cho chữ Latin không dấu, chữ số, dấu và một số mã điều khiển. Ví dụ chữ hoa `A` có mã thập phân 65, viết bằng 8 bit là `01000001` khi đặt trong một byte. Các bộ mã 8 bit mở rộng thêm 128 vị trí nhưng phần mở rộng có nhiều cách gán khác nhau; chỉ nói “ASCII mở rộng” chưa xác định mọi chữ tiếng Việt. **Unicode** gán mã chung cho kí tự của nhiều hệ chữ. **UTF-8** là một cách biến mã Unicode thành dãy byte để lưu/truyền văn bản. Nhờ đó, tệp có thể chứa chữ Việt cùng chữ của ngôn ngữ khác mà không phải đổi bảng mã theo từng đoạn.

Bài luyện

ASCII gốc dùng 7 bit. Tối đa có bao nhiêu mã khác nhau?
Chọn một đáp án

Một kí tự không nhất thiết là một byte

UTF-8 dùng **1–4 byte cho một mã Unicode**; số byte tùy kí tự. Ví dụ đã kiểm bằng Python với chuỗi được gõ như bảng: | Kí tự | Mã Unicode | UTF-8 | Số byte | |---|---|---|---:| | `A` | U+0041 | `41` | 1 | | `đ` | U+0111 | `C4 91` | 2 | | `ấ` | U+1EA5 | `E1 BA A5` | 3 | Các số trong cột UTF-8 viết ở hệ thập lục phân, mỗi cặp là **một byte**. Vì `đ` dùng 2 byte còn `ấ` dùng 3 byte, câu “mọi chữ tiếng Việt có dấu đều dùng 2 byte” là không đúng. Có chữ nhìn giống nhau nhưng được lưu bằng một mã dựng sẵn hoặc nhiều mã ghép dấu; khi ấy số byte của cả chuỗi cũng có thể khác.

Bài luyện

Trong bảng trên, chữ `ấ` chiếm bao nhiêu byte khi mã hóa UTF-8 theo đúng dạng đã cho?
Chọn một đáp án

Bài luyện

Điều nào giải thích đúng quan hệ giữa Unicode và UTF-8?
Chọn một đáp án

Đang học