Nhận biết một tài liệu cũ đang dùng bảng mã nào dựa vào hai manh mối chính: tên phông chữ trong tài liệu (".VnTime" là TCVN3, "VNI-Times" là VNI, "Times New Roman" hiện đúng dấu thường là Unicode) và "chữ ký" của chữ hiển thị sai (TCVN3 ra "ViÖt Nam", VNI ra "Vieät Nam", UTF-8 đọc nhầm ra "Việt Nam"). Xác định đúng bảng mã là bước bắt buộc trước khi chuyển sang Unicode — chọn sai nguồn khi chuyển mã sẽ làm hỏng văn bản thêm một lần nữa.
Vì sao phải đoán: tài liệu không tự khai bảng mã
Một tệp văn bản thô (.txt), một tệp Word đời cũ, một trang web cũ thường không ghi rõ mình dùng bảng mã nào. Phần mềm mở ra phải đoán, và đoán sai là chữ hỏng. Với tài liệu tiếng Việt thập niên 1990 – 2000, có ít nhất năm, sáu bảng mã phổ biến cùng lúc. Tin vui: mỗi bảng mã để lại dấu vết rất riêng, nhìn quen là nhận ra ngay.
Manh mối 1: tên phông chữ
Với tài liệu Word, Excel, PowerPoint, nhấp vào một đoạn chữ và nhìn ô tên phông trên thanh công cụ. Các bảng mã tiếng Việt cũ gắn chặt với phông riêng của chúng.
| Tên phông thấy trong tài liệu | Bảng mã gần như chắc chắn |
|---|---|
| .VnTime, .VnArial, .VnCentury, .VnTimeH, .VnArialH… | TCVN3 (TCVN 5712:1993, VN3); đuôi H là phông chữ hoa |
| VNI-Times, VNI-Helve, VNI-Univer, VNI-Avo… | VNI-Windows |
| Tên bắt đầu bằng "VPS" | VPS |
| Times New Roman, Arial, Tahoma, Calibri… và chữ hiện đúng dấu | Unicode |
| Times New Roman, Arial… nhưng chữ hiện sai | Bảng mã cũ đã bị đổi phông; xem manh mối 2 |
Cẩn thận trường hợp cuối: ai đó đã chọn cả văn bản TCVN3 rồi đổi phông sang Times New Roman mà không chuyển mã. Tên phông lúc này "nói dối", phải dựa vào cách chữ hiển thị.
Mẹo: nếu máy bạn có cài phông cũ, thử đổi đoạn văn sang .VnTime hoặc VNI-Times. Chữ hiện đúng ở phông nào thì đó là bảng mã của văn bản.
Manh mối 2: "chữ ký" của chữ hiển thị sai
Lấy câu quen thuộc "Cộng hòa xã hội chủ nghĩa Việt Nam" và "Độc lập – Tự do – Hạnh phúc" — có trong hầu hết văn bản hành chính cũ — làm mẫu so:
| Bạn thấy | Bảng mã gốc | Dấu hiệu nhận biết |
|---|---|---|
| Céng hoµ x· héi chñ nghÜa ViÖt Nam §éc lËp – Tù do – H¹nh phóc | TCVN3 | § thay Đ; nhiều µ, ·, ¹, Ë, Ö, Ü, ñ; chữ gốc bị thay hẳn |
| Coäng hoøa xaõ hoäi chuû nghóa Vieät Nam Ñoäc laäp – Töï do – Haïnh phuùc | VNI-Windows | Ñ thay Đ; chữ gốc còn nguyên, theo sau là ä, ø, õ, û, ï, ö… |
| Cá»™ng hòa xã há»™i… Việt Nam | Unicode UTF-8 bị đọc nhầm | Nhiều cặp "á»", "Ã", "áº"; xem bài riêng về lỗi "Việt" |
| Viêòt Nam (chữ có mũ đúng, dấu thanh lạc chỗ) | Windows-1258 bị đọc như Windows-1252 | Nguyên âm â, ê, ô hiện đúng nhưng dấu thanh hiện thành ò, ì, ó… đứng sau |
| Vie^.t Nam, Co^.ng ho`a | VIQR | Chỉ chữ ASCII; dấu thanh và mũ thể hiện bằng ^ ( + ' ` ? ~ . |
| Chữ có dấu đúng, nhưng có ô vuông ☐ hoặc dấu chồng lệch | Unicode, thiếu phông hoặc dạng tổ hợp | Không phải lỗi bảng mã; xem bài NFC – NFD và mục phông chữ |
VISCII và VPS hiếm gặp hơn và không có "chữ ký" dễ nhớ như hai bảng đầu; thường phải dựa vào tên phông, nguồn gốc tài liệu (thư tin, tài liệu cộng đồng người Việt ở nước ngoài thập niên 1990) hoặc thử chuyển mã.
Manh mối 3: nguồn gốc và thời điểm
| Nguồn tài liệu | Khả năng cao |
|---|---|
| Cơ quan, trường học, văn phòng trong nước, thập niên 1990 – đầu 2000 | TCVN3 |
| Văn phòng, công ty ở phía Nam cùng thời kỳ; cộng đồng người Việt ở Mỹ | VNI |
| Thư điện tử, nhóm tin, trang web cá nhân thập niên 1990 | VIQR, VISCII |
| Trang web đầu những năm 2000 khai "windows-1258" | Windows-1258 |
| Tài liệu từ sau khoảng năm 2005 trở đi | Unicode là chủ yếu |
Đây chỉ là xu hướng, không phải quy luật. Luôn kiểm bằng manh mối 1 và 2.
Manh mối 4: với tệp văn bản thô và trang web
- Trang web cũ: xem mã nguồn trang, tìm dòng khai báo charset. "utf-8" là Unicode; "windows-1258" là bảng mã Microsoft cho tiếng Việt; "iso-8859-1" hay không khai gì kèm phông .Vn hoặc VNI là bảng mã cũ dựa vào phông.
- Tệp .txt, .csv, phụ đề .srt: mở bằng trình soạn thảo cho phép chọn bảng mã khi mở. Thử UTF-8 trước, rồi Windows-1258. Nếu cả hai đều ra chữ lạ kiểu "Céng" hay "Coäng", đó là TCVN3 hoặc VNI ở dạng văn bản thô.
- Người dùng dòng lệnh trên Linux, macOS có thể dùng lệnh file -i hoặc công cụ đoán bảng mã như uchardet. Các công cụ này nhận UTF-8 tốt, nhưng thường không phân biệt được TCVN3, VNI vì những bảng này trông như bảng mã châu Âu.
- Tệp PDF: nếu chép chữ từ PDF ra ra kiểu "Céng hoµ", PDF được tạo từ văn bản TCVN3 có nhúng phông .Vn. Chữ trong PDF trông đúng nhưng dữ liệu bên dưới là TCVN3.
Quy trình năm bước khi nhận một tài liệu cũ
- Sao một bản giữ nguyên tệp gốc trước khi làm gì khác.
- Xem tên phông ở vài đoạn khác nhau, kể cả tiêu đề, bảng biểu, chú thích — một tài liệu có thể trộn nhiều bảng mã nếu được ghép từ nhiều nguồn.
- So "chữ ký" với bảng ở manh mối 2.
- Thử chuyển mã một đoạn ngắn bằng công cụ chuyển mã (bộ công cụ của Unikey hoặc phần mềm tương tự), chọn nguồn theo kết quả đoán, đích là Unicode. Đọc kết quả: đúng hết dấu là đoán đúng; ra chữ lạ kiểu mới là đoán sai, quay lại bước 3.
- Chuyển toàn bộ, đổi phông sang phông Unicode, rồi đọc soát chữ hoa, tiêu đề, bảng — nơi lỗi hay sót.
Nguyên tắc vàng: không chuyển mã hai lần. Văn bản đã ở Unicode mà chạy chuyển mã "TCVN3 sang Unicode" lần nữa sẽ hỏng nặng hơn, rất khó cứu.
Bài tập: đoán bảng mã
Đoán bảng mã gốc của năm dòng dưới đây. Đáp án ở cuối.
- Trêng THCS NguyÔn Du
- Tröôøng THCS Nguyeãn Du
- Trưá»ng THCS Nguyá»…n Du
- Tru+o+`ng THCS Nguye^~n Du
- Trường THCS Nguyễn Du — đổi sang phông .VnTime thì hỏng, để Times New Roman thì đúng
Đáp án: 1 – TCVN3 (dấu hiệu "" và "Ô"); 2 – VNI (chữ gốc kèm ö, ô, ø, ã); 3 – UTF-8 bị đọc nhầm; 4 – VIQR; 5 – Unicode.
Góc nhìn hôm nay
Kho tài liệu tiếng Việt từ thời trước Unicode — giáo trình, luận văn, sổ sách, kỷ yếu, thư từ — vẫn còn rất lớn trong máy tính cũ, đĩa CD, ổ cứng gia đình và cơ quan. Nhận đúng bảng mã là chìa khoá để đưa chúng sang Unicode an toàn. Chỉ cần nhớ hai "chữ ký" kinh điển: "§éc lËp" là TCVN3, "Ñoäc laäp" là VNI. Phần còn lại là kiên nhẫn thử một đoạn ngắn trước khi chuyển cả tài liệu.
Câu hỏi thường gặp
Làm sao biết văn bản đang dùng font TCVN3 hay VNI?
Nhìn tên phông: bắt đầu bằng ".Vn" là TCVN3, bắt đầu bằng "VNI-" là VNI. Nếu tên phông đã bị đổi, nhìn chữ hiển thị sai: "§éc lËp" là TCVN3, "Ñoäc laäp" là VNI.
Chữ "ViÖt Nam" là bảng mã gì?
Đó là văn bản TCVN3 đang hiển thị bằng phông không phải .Vn. Dấu hiệu là các ký tự như Ö, §, µ, · chen giữa chữ. Cần chuyển mã từ TCVN3 sang Unicode.
Chữ "Vieät Nam" là bảng mã gì?
Đó là văn bản VNI-Windows hiển thị bằng phông thường. Chữ gốc còn nguyên, theo sau là các ký tự như ä, ø, õ thể hiện dấu, và chữ Đ hiện thành Ñ.
Chuyển mã nhầm bảng mã nguồn thì sao?
Văn bản sẽ hỏng thêm một lớp, khó đọc hơn trước. Luôn sao lưu tệp gốc và thử chuyển một đoạn ngắn để kiểm trước khi chuyển toàn bộ.
Có phần mềm tự đoán bảng mã tiếng Việt không?
Các công cụ đoán bảng mã phổ thông nhận UTF-8 tốt nhưng thường không phân biệt được TCVN3 và VNI. Cách chắc nhất vẫn là nhìn tên phông, so dấu hiệu chữ hiển thị sai và thử chuyển một đoạn ngắn.