Giới-thiệu

Thân-thế
Thành-tích
Privacy Policy

Hữu-ích

Lập-kế-hoạch-tài-chính gia-đình

Đầu-tư-cổ-phiếu

Các loại bảo-hiểm

Câu-chuyện

Kinh-nghiệm

Máy-tính

Chữ-Việt

Linh tinh

Ý kiến

Danh mục

Download
Mục lục





Web chữ Việt

Nhận xét

Bài viết này nêu lên nhận xét về chữ Việt trong máy tính. Chủ đề của bài này không phải là Unicode là gì mà là Những gì không phải là Unicode. Những đoạn trong bài viết hơi nhiều chi tiết về kỹ thuật sẽ được đánh dấu ▲, người đọc có thể bỏ qua nếu không muốn đi sâu vào chi tiết.

Không biết trên thế giới có thứ chữ viết nào mà được thể hiện trong máy tính bằng nhiều cách như chữ Việt không? Trước khi chữ Việt được đưa vào Unicode và khi Unicode chưa được phổ biến trong các phần mềm thông dụng thì có tới vài chục cách để ghi chữ Việt trong máy tính. Nào là VNI, Bách Khoa, Lạc Việt, VSCII, ABC, VPS… (Xem phần cuối bài để biết thêm về chữ trong máy tính trước khi có Unicode.)
Việc chữ Việt được đưa vào Unicode đã làm giảm bớt tình trạng thập nhị sứ quân trong thế giới phần mềm Việt Nam. Nhưng cho tới lúc này vẫn còn rất nhiều người tiếp tục tạo ra những dòng chữ Việt trong máy tính theo những cách không phải Unicode.
Tôi đã từng hỏi một người quen là tại sao phải đi tìm font chữ VNI về cài vào máy để soạn ra những tài liệu theo VNI mà không dùng font chữ Unicode có sẵn trong máy (Arial, Times New Roman, Courier New). Câu trả lời là font chữ VNI đẹp hơn!
Thậm chí có những tài liệu chữ Việt chứa những câu lẫn lộn vài chữ kiểu VNI với vài chữ kiểu Unicode. Gặp tài liệu kiểu này thì tôi không dám hỏi tại sao nữa!

Unicode là gì?

Unicode là bộ chữ được thiết kế để chứa hết tất cả các chữ cái của tất cả các ngôn ngữ trên thế giới và còn chứa thêm những ký hiệu như ký hiệu toán, nhạc, kỹ thuật, chữ nổi… Theo thiết kế thì mỗi chữ cái trong Unicode được thể hiện bằng 32 bit, như vậy người ta có thể vẽ ra hơn bốn tỉ chữ cái và các ký hiệu. Hiện nay Unicode mới chỉ dùng có ba khối 16-bit đầu tiên, tức là mới vẽ ra có chừng 190.000 chữ cái và ký hiệu, trong đó phần lớn là các chữ Hoa, Nhật, Hàn. Nhưng chỉ có 16 bit đầu tiên là thông dụng nhất, gọi là Unicode 16-bit.

▲ Các cách thể hiện của Unicode trong máy tính

Với Unicode 16-bit các phần mềm mới xử lý được Unicode sẽ ghi mỗi chữ cái như là 16 bit, đó là dạng UCS2 tức là Unicode hai byte. Một số các phần mềm khác cũng xử lý được Unicode nhưng để tương thích với những chữ cái 8-bit hồi xưa nên ghi chữ cái theo dạng UTF-8 (mỗi chữ 16-bit được đổi thành một dãy từ một tới ba byte 8-bit liền nhau, phần lớn các nguyên âm Việt mang dấu thanh đều được ghi thành ba byte trong UTF-8).
Để ghi chữ cái 32-bit thì máy tính dùng UCS4 hoặc là UTF-16 (một chữ 32-bit được ghi thành một dãy vài chữ 16-bit, UCS2 là tập hợp con của UTF-16) hoặc là UTF-8 (mỗi chữ 32-bit được đổi thành một dãy từ một tới sáu byte 8-bit liền nhau). Hiện nay UTF-8 là thông dụng nhất trên Internet.
Một ví dụ của UCS2 là chữ Việt trong tin nhắn SMS của điện thoại di động, khi ta soạn SMS với chữ Việt có dấu thì mỗi tin nhắn chỉ viết được chừng 70 chữ cái thay vì 160 chữ cái nếu ghi chữ Việt không dấu; dù gửi SMS với đủ dấu hơi tốn tiền nhưng dễ đọc hơn nhiều.
Bây giờ, Unicode đã phổ biến rồi nhưng cũng còn hiện tượng nhiều kiểu chữ Việt Unicode! Sao? Đã là Uni (nghĩa là duy nhất, hợp nhất) rồi mà còn nhiều Uni nữa là sao?
Đúng vậy, thật sự là đang có nhiều thứ chữ Việt được gọi là Unicode trong các server Internet; được gọi là Unicode nhưng không thật sự là Unicode.

Kiểu Unicode giả thứ nhất là do sự lầm lẫn giữa Unicode với hai bộ chữ (character set) của Microsoft cũng có khả năng thể hiện chữ Việt. Đó là bộ chữ Windows-1252 và Windows-1258. Đây là hai bộ chữ 8-bit (tức là mỗi chữ cái được ghi trong máy tính với tám bit). Microsoft soạn ra bộ chữ Windows-1252 dành cho các chữ viết của các ngôn ngữ Tây Âu, và bộ chữ Windows-1258 dành cho chữ Việt.

Làm sao mà lầm được khi có nhiều người dùng đã biết là phải dùng chữ Việt Unicode?

Bởi vì các chương trình của Microsoft như là Microsoft Office sẽ dùng bộ chữ của Microsoft một cách mặc định để tạo ra tài liệu. Nếu chạy trên môi trường Windows tiếng Anh thì bộ chữ mặc định là Windows-1252, nếu chạy trên môi trường Windows tiếng Việt thì bộ chữ mặc định là Windows-1258. Hầu hết các máy tính ở Việt Nam dùng bản Windows tiếng Anh, rất hiếm khi thấy máy tính có bản Windows chữ Việt, nên hầu hết các tài liệu tạo ra theo bộ chữ Windows-1252.

Thế làm sao mà bộ chữ 8-bit lại chứa được chữ Việt Unicode 16-bit?

Bộ chữ Việt Windows-1258 chỉ dùng 8-bit để thể hiện chữ Việt vì nó dùng nguyên tắc tổ hợp, tức là dấu thanh rời ra khỏi nguyên âm. Theo cách tổ hợp này thì 8-bit cũng đủ để thể hiện tất cả chữ Việt có dấu. Mặc dù chữ Việt trong Unicode cũng có kiểu thể hiện dấu thanh rời ra khỏi nguyên âm nhưng chữ Việt Windows-1258 không phải là chữ Việt Unicode.

Thế còn bộ chữ Windows-1252 thì sao, nó đâu có được thiết kế để chứa các nguyên âm và dấu thanh chữ Việt?
Và tại sao người ta vẫn có thể gõ chữ Việt với nguyên âm và dấu thanh dựng sẵn (cần 16-bit) vào trong tài liệu Windows?

Đó là vì các chương trình ứng dụng Microsoft Office sẽ tự động ghi những chữ đó theo kiểu Unicode lẫn vào trong tài liệu kiểu Windows. Những chữ Unicode đó được ghi theo một cách riêng để chương trình Microsoft Office biết mà hiện ra cho đúng.

Tóm lại, hầu hết các tài liệu soạn ra trên Windows đều không phải là Unicode thuần. Có một chương trình của Microsoft trên Windows (NT, XP) soạn ra được tài liệu Unicode thuần, đó là Notepad. Khi ta gõ chữ Việt vào Notepad rồi lưu lại, nó sẽ hỏi là ta có muốn lưu lại theo dạng Unicode không. Nhưng Notepad lại rất ít được dùng để soạn tài liệu vì khả năng của nó quá hạn chế.

Vậy việc gì xảy ra khi những tài liệu Unicode ba rọi đó được đưa lên Internet?

Dạng tài liệu phổ biến nhất trên Internet là HTML. Trong phần đầu của tài liệu HTML có một dòng cho biết bộ chữ được dùng trong tài liệu. Ví dụ:
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
dòng này có nghĩa là tài liệu dùng bộ chữ Unicode dưới dạng UTF-8.
Gần như tất cả các trang web chữ Việt đều có ghi chú là trang web này dùng bộ chữ Unicode nhưng trong số đó có rất nhiều trang web dùng Windows-1252. Trang web tiếng Việt theo Windows-1252 sẽ có dòng:
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
và những chữ Việt trong đó sẽ được ghi theo cách đặc biệt gọi là HTML entities có dạng như sau: c&aacute;ch thi&#7871;t k&#7871; ph&#7847;n m&#7873;m h&#432;&#7899;ng
với cách ghi này, hầu như chúng ta không thể đọc-hiểu được nếu không có web browser diễn dịch lại thành chữ Việt bình thường.

Nếu tài liệu được viết bằng đúng Unicode thuần (UCS2 hoặc UTF-8) thì không cần web browser chúng ta cũng đọc-hiểu được. Các bạn có thể thử chọn menu View source của web browser khi đang xem các trang web chữ Việt sẽ thấy một số trang viết theo kiểu Unicode thuần còn một số trang viết theo kiểu Windows-1252.

Tuy nhiên cũng có một số trang web dùng Unicode nhưng không viết dưới dạng UTF-8 mà lại viết theo kiểu HTML entities. Đó là kiểu Unicode giả thứ hai.

Các web site chữ Việt dùng đúng UTF-8: lhboi.homelinux.net, mail.google.com, mail.yahoo.com, vnoss.org, eab.com.vn, www.bidv.com.vn, www.baoviet.com.vn, www.manulife.com.vn, vietnamnet.vn, www.nld.com.vn, www.thanhnien.com.vn, tuoitre.com.vn, www.pcworld.com.vn, www.sgtt.com.vn…
Các web site chữ Việt dùng HTML entities: google.com, acb.com.vn, vnexpress.net, www.htv.com.vn
Các web site chữ Việt dùng Windows-1252: www.vietcombank.com.vn, www.vcbs.com.vn, vietnamgiapha.com, basao.com.vn, www.voh.org.vn
Các web site chữ Việt dùng Windows-1258: livefeeling.com/viet/index.htm

Những nhược điểm của những trang web không dùng đúng UTF-8:

Nhược điểm thứ nhất là tốn chỗ, tốn thời gian truyền qua Internet.
Nhược điểm thứ hai đã nói ở trên là không đọc được nếu không có web browser.
Thậm chí một số web browser đặc biệt cũng không đọc được kiểu HTML entities trong các trang web chữ Việt theo Windows-1252 hay Windows-1258. Đó là những micro browser trong các máy điện thoại di động, do khả năng giới hạn nên nó chỉ đọc được đúng một loại Unicode. Như vậy những trang web chữ Việt theo Windows-1252 hay Windows-1258 sẽ không được xem trên các máy di động.
Nhân nói về web browser và điện thoại di động, ta cũng nhắc đến một kiểu thể hiện chữ Việt trong Internet nữa là chữ Việt không dấu. Mặc dù phần lớn các máy điện thoại di động được bán ra trong những năm gần đây trên thị trường Việt Nam đều hiện được chữ Việt Unicode, nhưng hầu hết các trang wml ở Việt Nam đều được viết dưới dạng chữ Việt không dấu, rất khó coi.

▲Các bạn sẽ hỏi làm sao server biết được điện thoại nào có chữ Việt để gửi ra đủ dấu?

Có đấy. Khi micro browser trong máy điện thoại gửi yêu cầu xem một trang đến server nó cũng cho server biết luôn là nó muốn xem ngôn ngữ gì theo bộ chữ nào, đó là các Header. Ví dụ: Accept-Language: vi, Accept-Charset: UTF-8. Nếu server làm việc đúng cách nó phải xem các Header để biết khi nào nên gửi chữ Việt cho máy điện thoại.

▲Trước khi có Unicode thì chữ được thể hiện như thế nào trong máy tính?

Trước khi điện tín được số hoá thì người ta dùng bộ mã Morse để truyền điện tín. Trong bộ mã Morse, mỗi chữ cái hoặc số được thể hiện bằng một cho tới năm tín hiệu ngắn và dài. Tín hiệu ngắn được ghi dưới dạng một dấu chấm và được truyền đi bằng một xung điện ngắn, tín hiệu dài được ghi dưới dạng một gạch ngang và được truyền đi bằng một xung điện dài. Bộ mã Morse cũng được dùng để truyền tin qua các phương tiện khác như còi, đèn chớp. Một thông báo nổi tiếng thể hiện qua bộ mã Morse là ··· --- ···, nghĩa là SOS.
Khi mới bắt đầu số hoá điện tín (chưa có máy tính) thì người ta chỉ dùng có năm bit để thể hiện một chữ cái (bộ chữ Baudot, theo tên nhà phát minh người Pháp Jean-Maurice-Émile Baudot). Năm bit đủ để thể hiện 26 chữ in hoa. Còn các chữ số từ zero đến chín thì sao? Để thể hiện thêm các chữ số và các dấu ngắt câu, bộ chữ Baudot có cơ chế dời (Shift), khi dời thì chữ cái được thay bằng chữ số, dấu ngắt câu (tương tự như phím Shift trên bàn phím hiện nay). Như vậy với năm bit và dời thì bộ chữ Baudot thể hiện được 55 chữ và ký hiệu. Tại sao phải làm theo kiểu dời cho phiền mà không dùng luôn sáu bit? Vì lúc đó (thế kỷ 19) bàn phím để nhập điện tín là bàn phím cơ có năm phím để ấn bằng năm ngón tay của một bàn tay, việc chế tạo bàn phím sinh ra sáu bit phức tạp hơn nhiều.
Đến thập kỷ 50 của thế kỷ 20, máy tính đã được đưa vào sử dụng làm phát sinh nhu cầu có một bộ chữ đầy đủ hơn bộ chữ Baudot. Cơ quan chuẩn hoá của Mỹ đề ra bộ chữ ASCII 7-bit chứa chữ Latin in hoa, chữ in thường. Tại sao lại là bảy bit mà không dùng luôn tám bit của một byte? Tại vì đối với Anh ngữ thì bảy bit đã đủ rồi và người ta muốn tiết kiệm, để bit cuối cùng dùng làm parity bit, để kiểm tra xem thông tin trong byte này có đúng không hay đã bị sai khi truyền từ môi trường này qua môi trường khác.
ASCII là bộ chữ chuẩn của Mỹ, nhưng vào thời gian đó hãng IBM lại không dùng ASCII mà dùng bộ chữ 8-bit riêng là EBCDIC. Đó là một cách để ràng buộc khách hàng của IBM, đã lỡ chứa dữ liệu theo dạng EBCDIC rồi thì cứ phải tiếp tục dùng phần cứng và phần mềm của IBM để xử lý.
Khi máy tính được bán đến những nước khác nước Mỹ, bộ chữ ASCII 7-bit được mở rộng lên thành 8-bit để thêm các chữ cái Latin của các nước châu Âu. Trong khi đó IBM phải chế thêm các biến thể của EBCDIC, có tới 57 bộ EBCDIC cho các nước khác nhau! Tổ chức tiêu chuẩn quốc tế đặt ra tiêu chuẩn ISO 2022 để quy định cách chế ra các bộ chữ 7-bit và 8-bit khác, và cách chuyển từ bộ chữ này sang bộ chữ khác (trong trường hợp cần dùng nhiều bộ chữ trong một tài liệu). Từ đó các bộ chữ ISO 8859 được chế ra cho các chữ cái Latin, Hy lạp, Do thái, Ả rập, và Đông Âu. Ngoài ra các hãng phần mềm cũng liên tục đặt ra các bộ chữ theo nhu cầu của họ, ví dụ như Windows-1252 của Microsoft. <
Còn các chữ Hoa, Nhật, Hàn thì sao? Thời gian đầu, Nhật dùng một bộ chữ 8-bit, trong đó một nửa là chữ Latin, một nửa là chữ katakana. Sau đó, Nhật soạn ra các bộ chữ 8-bit theo chuẩn ISO 2022 để chứa hết hàng ngàn chữ kanji của họ. Đó là các bộ chữ JIS. Tương tự, ở Trung quốc và Hàn quốc cũng có các bộ chữ theo tiêu chuẩn ISO 2022 của riêng mỗi nước.
Cuối cùng là chữ Việt! So với tiếng Anh, tiếng Việt có thêm sáu nguyên âm và một phụ âm và có tới sáu thanh. Tất cả những thanh và nguyên âm tổ hợp lại sinh ra thêm 134 ký tự. Và như vậy là không thể đặt một bộ chữ Việt 8-bit theo đúng chuẩn ISO 2022 (mà cần tới hai bộ chữ 8-bit). Tuy nhiên, người Việt lại ít có phần mềm viết riêng để xử lý một bộ chữ ISO 2022 riêng giống như các nước Hoa, Nhật, Hàn. Do phải dùng đỡ các phần mềm chuyên xử lý các bộ chữ 8-bit của Mỹ và Tây Âu, nên người Việt phải cố ép tất cả chữ Việt vào một bộ chữ 8-bit, thế là không theo chuẩn ISO 2022. Và vì không có bộ nào đúng theo chuẩn nên không ai chịu nhường ai, mỗi nơi chế ra một bộ chữ Việt. Cuối cùng cũng có một bộ chữ TCVN theo chuẩn ISO 2022, nhưng vì thiếu phần mềm xử lý nên không đưa vào thực tế được.
Có một cách để làm một bộ chữ Việt 8-bit, Microsoft đã dùng để làm bộ chữ Windows-1258, đó là cách để dấu thanh và nguyên âm là hai ký tự riêng, khi vẽ ra màn hình hay giấy in thì đặt dấu trùng lên vị trí của nguyên âm. Nhưng cách này chỉ thực hiện được trên các phần mềm có giao diện đồ hoạ gần đây thôi, không thể thực hiện được trên các phần mềm của mười năm về trước.
Thế giới máy tính trước khi có Unicode thật là rối rắm phải không?

Các lỗi khác trong các trang web Việt

Lỗi viết sai các ký hiệu superscript và subscript

Các ký hiệu phải viết kiểu superscript và subscript như độ, mét vuông, mét khối rất thường gặp nhưng cũng rất thường bị viết một cách cẩu thả như:

Đối với những người không chuyên soạn tài liệu trên máy tính sẽ không biết cách trình bày những ký hiệu đó cho đúng cách. Khi đó cách tốt nhất là ghi ra thành chữ thay vì ghi ký hiệu. Ví dụ như 29 độ C, quay 180 độ, 14 mét vuông, 12 mét khối. Tuy nhiên đã viết ra chữ thì phải viết đủ chứ không nên viết kiểu 14 m vuông.
Đối với những nơi chuyên nghiệp như các báo mà cũng viết sai thì thật là đáng chê.
Có hai cách ghi đúng những ký hiệu đó. Cách thứ nhất là dùng lệnh định dạng chữ cao (superscript) hay chữ thấp (subscript). Cách thứ hai là dùng các ký hiệu có sẵn trong bộ chữ Unicode, viết theo cách này đẹp hơn.
Bài này được đăng trong e-CHIP số Tháng Sáu, 2007.

Trang-web này được áp-dụng Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. Bạn được phép chép lại trang-web này, với điều-kiện không được thay-đổi nội-dung và không dùng cho mục-đích thu-lợi và ghi rõ nguồn-gốc https://LeHBoi.github.io. Điều kiện trên cũng áp dụng với domain name trước đây của website này là LHBOI.NAME.VN.