Unicode

Bộ mã ASCII và Unicode mã hóa được bao nhiêu kí tự?

ASCII mã hóa 128 kí tự (256 với ASCII mở rộng), Unicode có chỗ cho 1.114.112 kí tự. Giải thích vì sao sách hay ghi 256 và 65.536, và kí tự đặc biệt nằm ở đâu.

Thử ngay A ♡ ★ 亗 😀
Mở bảng kí tự →

Câu hỏi này hay gặp trong môn Tin học và cũng là gốc rễ của chuyện “vì sao kí tự đặc biệt sao chép được”. Câu trả lời ngắn: ASCII mã hóa được 128 kí tự (256 nếu tính ASCII mở rộng 8 bit), còn Unicode có chỗ cho 1.114.112 kí tự, trong đó hơn 159 nghìn kí tự đã được gán.

Trả lời nhanh

Bộ mã Số bit Số kí tự mã hóa được
ASCII chuẩn 7 bit 2⁷ = 128 kí tự
ASCII mở rộng 8 bit 2⁸ = 256 kí tự
Unicode 16 bit (cách gọi cũ) 16 bit 2¹⁶ = 65.536 kí tự
Unicode hiện nay Tới 21 bit cho mỗi mã 1.114.112 vị trí mã (U+0000 đến U+10FFFF)

Bộ mã ASCII: 128 hay 256 kí tự?

ASCII ra đời năm 1963, dùng 7 bit cho mỗi kí tự nên có 2⁷ = 128 mã, đánh số từ 0 đến 127:

  • 33 mã điều khiển không in ra được (0–31 và 127), như xuống dòng, tab.
  • 95 kí tự in được (32–126): dấu cách, chữ số 0–9, chữ cái A–Z, a–z và các dấu như ! @ # $ %.

Máy tính lưu theo byte 8 bit, nên người ta dùng thêm bit thứ tám để có ASCII mở rộng với 256 mã. Đây là con số nhiều sách giáo khoa ghi. Điều cần biết là 128 mã thêm vào không có một chuẩn chung: mỗi bảng mã (Latin-1, Windows-1252, TCVN3…) gán chúng cho kí tự khác nhau, nên cùng một văn bản có thể hiện sai chữ khi mở bằng bảng mã khác.

Bộ mã Unicode: 65.536 hay hơn 1,1 triệu?

Phiên bản Unicode đầu tiên (1991) dùng 16 bit, tức 2¹⁶ = 65.536 kí tự. Vì vậy nhiều tài liệu vẫn trả lời “Unicode mã hóa được 65.536 kí tự”.

Từ Unicode 2.0, không gian mã được mở rộng thành 17 mặt phẳng × 65.536 = 1.114.112 vị trí mã, viết từ U+0000 đến U+10FFFF. Mặt phẳng đầu tiên chứa hầu hết chữ viết đang dùng; các mặt phẳng sau chứa emoji, chữ cổ, chữ toán học như 𝐀 𝓐 𝔄 và nhiều kí hiệu khác.

Không phải vị trí nào cũng có kí tự. Tính đến Unicode 17.0 (phát hành tháng 9/2025) có 159.801 kí tự đã được gán, mỗi phiên bản mới lại bổ sung thêm. Ngoài ra có 137.468 vị trí dành riêng cho mục đích cá nhân, như logo quả táo của Apple: kí tự này chỉ hiện đúng trên máy Apple, máy khác thấy ô trống.

Unicode chỉ quy định mỗi kí tự có mã số nào. Cách ghi mã số đó thành byte là việc của các kiểu mã hóa như UTF-8 (1 đến 4 byte mỗi kí tự, dùng phổ biến trên web) hay UTF-16. 128 kí tự đầu của UTF-8 trùng khớp ASCII, nên văn bản ASCII cũ vẫn đọc được.

Vì sao tiếng Việt và kí tự đặc biệt cần Unicode?

128 mã của ASCII không có chỗ cho chữ có dấu như ă, ơ, ệ. Trước đây tiếng Việt phải dùng các bảng mã riêng như TCVN3 hay VNI, mỗi bảng một kiểu nên rất dễ lỗi phông. Unicode gán cho mỗi chữ một mã duy nhất, vì thế chữ tiếng Việt, trái tim ♡, ngôi sao ★, chữ Hán trang trí 亗 hay emoji 😀 đều nằm chung một bảng.

Đó cũng là lý do kí tự đặc biệt sao chép được: bạn không chép một hình ảnh hay một phông chữ, mà chép mã Unicode của kí tự. Ứng dụng nhận được mã đó sẽ tự vẽ kí tự bằng phông của thiết bị. Nếu thiết bị chưa có phông cho kí tự ấy, bạn sẽ thấy ô vuông □ thay vì kí tự thật.

Muốn xem mã của từng kí tự, mở bảng kí tự đặc biệt: mỗi kí tự đều ghi kèm mã U+ và có thể tìm theo mã.

Câu hỏi thường gặp

Đề thi hỏi “bộ mã ASCII mã hóa được bao nhiêu kí tự” thì chọn 128 hay 256?

Theo chuẩn gốc, ASCII mã hóa 128 kí tự. Nếu đề nói ASCII dùng 8 bit (ASCII mở rộng) thì đáp án là 256. Hãy đọc kỹ đề đang nói về loại nào.

Vì sao có nơi ghi Unicode mã hóa 65.536 kí tự?

Đó là con số của Unicode 16 bit thời đầu. Unicode ngày nay có 1.114.112 vị trí mã, nhưng nhiều tài liệu cũ vẫn dùng con số 65.536.

Một kí tự Unicode chiếm bao nhiêu byte?

Tùy kiểu mã hóa. Với UTF-8, chữ Latinh không dấu chiếm 1 byte, chữ tiếng Việt có dấu thường 2–3 byte, emoji và chữ toán học như 𝓐 chiếm 4 byte.

Bảng kí tựChạm để sao chép, hoặc bấm + để ghép nhiều kí tự rồi sao chép một lần. Mở bảng kí tự →