Trả lời nhanh
Cần có Unicode vì các bộ mã cũ như ASCII chỉ biểu diễn được vài trăm ký tự, không đủ cho chữ viết của mọi ngôn ngữ và dễ xung đột giữa các bảng mã. Unicode gán cho mỗi ký tự một mã duy nhất, dùng chung toàn cầu, nên văn bản hiển thị đúng trên mọi máy, mọi phần mềm, không bị lỗi font.
Bối cảnh: vì sao ASCII không đủ dùng?
Máy tính chỉ lưu số nhị phân, nên mỗi chữ cái phải được “đánh số” trước. Bộ mã ASCII dùng 7 bit, biểu diễn được 128 ký tự: chữ cái Latinh không dấu, chữ số, dấu câu và một số ký tự điều khiển. Bản ASCII mở rộng dùng 8 bit, được 256 ký tự.
Con số 256 quá nhỏ. Riêng tiếng Việt đã có 134 chữ cái có dấu (chữ thường và chữ hoa cộng lại) ngoài các ký tự cơ bản. Tiếng Trung có hàng chục nghìn chữ Hán, chưa kể tiếng Nhật, Hàn, Ả Rập, Thái, Hindi…
Điều gì xảy ra khi không có bộ mã chung?
Mỗi quốc gia, mỗi hãng phần mềm tự tạo bảng mã riêng cho ngôn ngữ của mình. Với tiếng Việt từng có TCVN3, VNI, VISCII… Cùng một số hiệu mã nhưng mỗi bảng mã gán cho một chữ khác nhau.
- Soạn văn bản bằng bảng mã này, mở bằng bảng mã khác sẽ ra các ký tự lạ (“lỗi font”).
- Muốn đọc đúng phải cài đúng phông chữ tương ứng với bảng mã.
- Một văn bản trộn nhiều ngôn ngữ (ví dụ tiếng Việt, tiếng Anh và tiếng Nhật) gần như không thể hiển thị đồng thời.
- Khó trao đổi dữ liệu qua email, web, cơ sở dữ liệu giữa các nước.
Unicode giải quyết vấn đề như thế nào?
Unicode là bộ mã quốc tế, gán cho mỗi ký tự của hầu hết hệ chữ viết trên thế giới một số hiệu (gọi là điểm mã, viết dạng U+xxxx) duy nhất. Hiện nay bộ mã này có hơn 100 000 ký tự, gồm cả ký hiệu toán học, biểu tượng cảm xúc (emoji).
| Ký tự | Điểm mã Unicode |
|---|---|
| A | U+0041 |
| đ | U+0111 |
| ệ | U+1EC7 |
Dù máy dùng hệ điều hành nào, phần mềm nào, ký tự “ệ” luôn ứng với U+1EC7, nên không còn nhầm lẫn giữa các bảng mã.
Lợi ích chính của Unicode
- Thống nhất: một bộ mã duy nhất cho mọi ngôn ngữ.
- Đa ngôn ngữ: một văn bản chứa được nhiều thứ tiếng cùng lúc.
- Tương thích: 128 mã đầu của Unicode trùng ASCII, nên dữ liệu cũ vẫn đọc được.
- Dễ trao đổi: web, email, điện thoại, phần mềm văn phòng đều dùng được.
Unicode được lưu trên máy bằng các cách mã hoá như UTF-8, UTF-16, UTF-32. UTF-8 phổ biến nhất trên web: ký tự ASCII chiếm 1 byte, các chữ khác chiếm 2 đến 4 byte.
Cách chọn đáp án khi gặp câu hỏi trắc nghiệm
Nếu đề cho nhiều phương án, hãy chọn phương án có ý: “thống nhất một bộ mã cho mọi ngôn ngữ / biểu diễn được chữ viết của nhiều ngôn ngữ / tránh lỗi font”. Loại các phương án sau:
- Nói Unicode ra đời để tiết kiệm bộ nhớ: sai, Unicode thường tốn nhiều byte hơn ASCII.
- Nói Unicode chỉ dành cho tiếng Việt: sai, đây là bộ mã toàn cầu.
- Nói Unicode để mã hoá hình ảnh, âm thanh: sai, Unicode chỉ mã hoá ký tự.
Lỗi sai thường gặp
- Nhầm Unicode với phông chữ. Unicode là bộ mã; phông (Arial, Times New Roman…) là kiểu hiển thị hình dạng chữ.
- Cho rằng Unicode và UTF-8 là một. UTF-8 chỉ là một cách lưu Unicode.
- Cho rằng Unicode dùng đúng 16 bit cho mọi ký tự. Điều này chỉ đúng với các phiên bản rất cũ.
Mẹo nhớ: ASCII là “bảng chữ của tiếng Anh”, Unicode là “bảng chữ của cả thế giới”.
Bài luyện tập
- Vì sao một văn bản soạn bằng bảng mã VNI có thể hiện thành ký tự lạ khi mở trên máy chỉ dùng TCVN3?
Đáp án: cùng số hiệu mã nhưng hai bảng mã gán cho hai chữ khác nhau, nên máy hiểu sai. - Bộ mã ASCII 7 bit biểu diễn được bao nhiêu ký tự?
Đáp án: 27 = 128 ký tự. - Nêu hai lợi ích khi dùng Unicode cho website tiếng Việt và tiếng Nhật.
Đáp án: hiển thị đúng cả hai thứ tiếng trong cùng một trang; không cần cài phông hoặc bảng mã riêng.
Câu hỏi thường gặp
Unicode là gì?
Unicode là bộ mã chuẩn quốc tế gán cho mỗi ký tự của hầu hết chữ viết trên thế giới một điểm mã duy nhất, giúp máy tính lưu và hiển thị văn bản thống nhất.
Unicode khác ASCII ở điểm nào?
ASCII chỉ có 128 ký tự (bản mở rộng 256), chủ yếu cho tiếng Anh. Unicode có hơn 100 000 ký tự của nhiều ngôn ngữ, và 128 mã đầu trùng với ASCII.
Unicode có giúp khắc phục lỗi font tiếng Việt không?
Có. Khi mọi phần mềm cùng dùng Unicode, mỗi chữ có một mã duy nhất nên không còn nhầm giữa các bảng mã như TCVN3 hay VNI.
UTF-8 có phải là Unicode không?
UTF-8 là một cách mã hoá để lưu các ký tự Unicode vào bộ nhớ, dùng 1 đến 4 byte cho mỗi ký tự. Unicode là bộ mã, UTF-8 là cách lưu.