Lưu LoátWiki
Tìm
Bảng mã & Unicode

VNI-Windows, VISCII, VPS: các bảng mã tiếng Việt trước thời Unicode

VNI-Windows ghép chữ có dấu từ hai byte, VISCII và VPS nhét đủ 134 chữ vào một byte bằng vị trí mã điều khiển. So sánh, nhận mặt lỗi Coäng hoøa và phân biệt kiểu gõ VNI.

VNI-Windows, VISCII, VPS: các bảng mã tiếng Việt trước thời Unicode

VNI-Windows, VISCII và VPS là ba bảng mã tiếng Việt phổ biến trước thời Unicode, mỗi loại giải bài toán "134 chữ có dấu trong một byte" theo một cách: VNI-Windows ghép nhiều chữ từ hai byte (chữ gốc cộng một ký tự dấu); VISCII và VPS nhét đủ 134 chữ vào một byte bằng cách chiếm cả vài vị trí của mã điều khiển. Cả ba đều cần phông riêng và nay đã được thay bằng Unicode, nhưng tài liệu cũ — nhất là tài liệu gõ ở miền Nam và trong cộng đồng người Việt ở nước ngoài — vẫn còn nhiều.

Thời "loạn bảng mã"

Từ cuối thập niên 1980 đến đầu những năm 2000, người Việt trong và ngoài nước dùng hàng chục bảng mã khác nhau. Bộ công cụ chuyển mã của Unikey hiện vẫn liệt kê hơn chục bảng: TCVN3, VNI Windows, VNI Mac, VISCII, VPS, BK HCM 1, BK HCM 2, Vietware X, Vietware F, Windows CP 1258, VIQR… Mỗi bảng đi kèm bộ phông và phần mềm gõ riêng.

TCVN3 (TCVN 5712:1993) có bài riêng trong mục này. Bài này nói về ba bảng mã còn lại hay gặp nhất, cùng hai "họ hàng" thường bị nhầm với chúng: Windows-1258 và VIQR.

VNI-Windows: chữ ghép từ hai byte

VNI là bảng mã của Công ty phần mềm VNI, đi kèm bộ gõ cùng tên và các phông có tên bắt đầu bằng "VNI-" như VNI-Times, VNI-Helve, VNI-Univer. Bảng mã này phổ biến ở miền Nam và trong cộng đồng người Việt ở Mỹ.

Cách làm của VNI-Windows khác TCVN3: thay vì cố nhét mỗi chữ có dấu vào một vị trí, nhiều chữ được ghép từ hai byte — chữ cái gốc rồi đến một ký tự đặc biệt trong phông vẽ phần dấu chồng lên. Nhờ vậy đủ chỗ cho cả chữ hoa có dấu, không cần phông "H" riêng như TCVN3.

Đổi lại, một chữ trên màn hình là hai ký tự trong máy. Đếm ký tự, cắt chuỗi, tìm kiếm, đổi hoa – thường đều dễ sai. Xoá bằng Backspace đôi khi chỉ xoá phần dấu, còn lại chữ gốc.

Nhận mặt chữ VNI hiển thị sai

Đúng ra làHiện bằng phông thường thành
Cộng hòa xã hội chủ nghĩa Việt NamCoäng hoøa xaõ hoäi chuû nghóa Vieät Nam
Độc lập - Tự do - Hạnh phúcÑoäc laäp - Töï do - Haïnh phuùc

Dấu hiệu: chữ không dấu đi kèm ngay sau là một ký tự châu Âu có dấu như ä, ø, õ, û, ù, ï, ö; chữ "Đ" hiện thành Ñ. Khác TCVN3, văn bản VNI hiển thị sai vẫn "đọc lờ mờ được" vì chữ gốc còn nguyên.

VISCII và VPS: đủ 134 chữ trong một byte

VISCII (VIetnamese Standard Code for Information Interchange) do nhóm Viet-Std — một nhóm chuyên gia người Việt ở nước ngoài — xây dựng đầu thập niên 1990. Năm 1993, VISCII được mô tả trong tài liệu RFC 1456 của cộng đồng Internet, cùng với quy ước VIQR.

Để có đủ 134 chữ trong một byte, VISCII dùng toàn bộ nửa trên (128 vị trí) và lấy thêm sáu vị trí mã điều khiển ít dùng ở nửa dưới. Ưu điểm: mỗi chữ đúng một byte, có đủ chữ hoa có dấu. Nhược điểm: phần mềm nào coi những mã điều khiển đó là lệnh (như một số chương trình truyền tin, máy in đời cũ) sẽ xử lý sai vài chữ.

VISCII từng được dùng nhiều trên mạng thư tin, nhóm tin và các hệ thống Unix của cộng đồng người Việt ở nước ngoài thập niên 1990.

VPS: một lời giải tương tự

VPS là một bảng mã 8 bit khác cũng nhét đủ chữ Việt vào một byte bằng cách dùng thêm một số vị trí mã điều khiển, đi kèm các phông có tên bắt đầu bằng "VPS". Bảng mã này có mặt trong một số phần mềm và cộng đồng người dùng ở nước ngoài, nhưng ít phổ biến hơn VNI và TCVN3 ở trong nước. Gặp tài liệu dùng phông "VPS …", hãy chọn đúng nguồn VPS khi chuyển mã.

Windows-1258 và VIQR: hay bị nhầm là bảng mã cũ

  • Windows-1258 (CP1258) là bảng mã tiếng Việt của Microsoft. Nó chứa sẵn các nguyên âm có mũ, móc, trăng (â, ê, ô, ơ, ư, ă) và đ, còn dấu thanh là ký tự riêng đứng sau. Chữ "ệ" được lưu thành "ê" cộng một ký tự dấu nặng. Bảng mã này xuất hiện chủ yếu ở một số trang web và tệp văn bản đời cũ.
  • VIQR không phải bảng mã theo nghĩa thông thường mà là quy ước viết tiếng Việt chỉ bằng ký tự ASCII, dùng dấu câu thay dấu thanh, ví dụ "Vie^.t Nam". Nó được mô tả trong RFC 1456 (1993) và từng dùng nhiều trong thư điện tử. Cách gõ theo VIQR có bài riêng ở mục kiểu gõ.

Bảng so sánh các bảng mã trước Unicode

Bảng mãByte mỗi chữ có dấuChữ hoa có dấuDùng vùng mã điều khiểnPhông đi kèmHay gặp ở
TCVN3 (VN3)1Không, dùng phông "H"Không.VnTime, .VnArial…Văn phòng, cơ quan trong nước
VNI-Windows1 hoặc 2CóKhôngVNI-Times, VNI-Helve…Miền Nam, cộng đồng người Việt ở Mỹ
VISCII1CóCó (6 vị trí)Phông VISCIIThư tin, Unix, cộng đồng hải ngoại
VPS1CóCóPhông "VPS…"Một số cộng đồng, phần mềm
Windows-12581 hoặc 2CóKhôngPhông Windows thườngTrang web, tệp văn bản cũ
Unicode (TCVN 6909:2001)2–3 (UTF-8)CóKhôngMọi phông hỗ trợ tiếng ViệtMọi nơi hiện nay

Kiểu gõ VNI và bảng mã VNI: hai chuyện khác nhau

Đây là chỗ nhầm phổ biến nhất. Kiểu gõ VNI là cách bấm phím: dùng phím số 1–9 để bỏ dấu (1 sắc, 2 huyền, 6 dấu mũ…). Bảng mã VNI là cách máy lưu chữ. Hai thứ hoàn toàn độc lập:

  • Bạn có thể gõ kiểu VNI mà chữ lưu bằng Unicode — đây là cách đúng ngày nay, chỉ cần chọn kiểu gõ "VNI" và bảng mã "Unicode" trong bộ gõ.
  • Ngược lại, có thể gõ kiểu Telex mà lưu bằng bảng mã VNI — chính là nguồn gốc nhiều tệp lỗi khi người dùng chọn nhầm bảng mã trong bộ gõ.

Nếu ai đó bảo "máy mình gõ VNI", hãy hỏi lại họ nói về kiểu gõ hay bảng mã. Bảng phím của kiểu gõ VNI có ở mục kiểu gõ.

Vì sao tất cả đều thua Unicode

Mỗi bảng mã cũ đều có lý do hợp lý trong giới hạn của máy 8 bit. Nhưng chúng cùng chung ba điểm yếu:

  1. Cần phông riêng. Không có phông là không đọc được. Điện thoại, máy nước ngoài, trang web đều không có sẵn phông .Vn, VNI-, VPS.
  2. Không tự khai báo. Một tệp văn bản thô không ghi mình dùng bảng mã nào; người nhận phải đoán.
  3. Không trộn được. Một văn bản không thể vừa có chữ Việt TCVN3 vừa có chữ Nhật, chữ Nga. Unicode chứa tất cả trong một.

Góc nhìn hôm nay

Lịch sử các bảng mã tiếng Việt phản ánh một thời kỳ người Việt trong và ngoài nước cùng loay hoay đưa chữ có dấu lên máy tính, mỗi nhóm một lời giải. Unicode đã khép lại chuyện đó. Nhưng nếu bạn đang giữ thư từ, bản thảo, tài liệu hội đoàn, sổ sách gia đình từ thập niên 1990, hãy kiểm xem chúng dùng bảng mã nào và chuyển sang Unicode sớm. Tài liệu gốc RFC 1456 vẫn đọc được miễn phí trên trang của IETF (rfc-editor.org) cho ai muốn xem bảng VISCII đầy đủ.

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

Bảng mã VNI-Windows là gì?

VNI-Windows là bảng mã tiếng Việt 8 bit của Công ty VNI, đi kèm các phông VNI-Times, VNI-Helve. Nhiều chữ có dấu được ghép từ hai byte: chữ gốc và một ký tự dấu, nên có đủ chữ hoa có dấu.

Chữ "Coäng hoøa" là lỗi bảng mã gì?

Đó là văn bản dùng bảng mã VNI đang hiển thị bằng phông thường không phải VNI. Dấu hiệu là chữ gốc đi kèm các ký tự như ä, ø, õ, và chữ Đ hiện thành Ñ. Cần chuyển mã VNI sang Unicode.

VISCII khác TCVN3 thế nào?

VISCII nhét đủ 134 chữ có dấu, kể cả chữ hoa, vào một byte bằng cách dùng thêm sáu vị trí mã điều khiển. TCVN3 không dùng vùng điều khiển nên phải bỏ chữ hoa có dấu thanh sang phông riêng.

VIQR có phải là bảng mã không?

VIQR là quy ước viết tiếng Việt chỉ bằng ký tự ASCII, dùng dấu câu thay dấu thanh như "Vie^.t Nam". Nó được mô tả trong RFC 1456 năm 1993, thường dùng trong thư điện tử thời chưa có Unicode.

Có còn cần cài phông VNI không?

Chỉ khi cần mở tài liệu cũ dùng bảng mã VNI. Cách tốt hơn là chuyển các tài liệu đó sang Unicode một lần, sau đó dùng phông thông thường.

Mở app Lưu Loát

Gõ tiếng Việt nhanh, chuẩn, lưu loát từng dấu

Mở app Lưu Loát

Bài viết liên quan

Mở app Lưu Loát

Gõ tiếng Việt nhanh, chuẩn, lưu loát từng dấu

Mở app Lưu Loát Xem app khác