Hữu ích

Các giai đoạn của cuộc đời
Chi tiêu có kế hoạch
Lạm phát lối sống
Tích luỹ tài sản
Làm giàu không khó
Để tiền vào đâu
Những cách đầu tư
Đừng sợ chữ đầu tư
So sánh công cụ tích luỹ dài hạn
Chuẩn bị vào đại học
Tiền thưởng cuối năm
Vài số liệu về quỹ hưu trí tự nguyện ở Mỹ

Câu chuyện

Bài học phổ thông
Những hòn đá
Sứ giả của Đấng Thiêng Liêng
Bắt đầu đầu tư
Ước mơ thành tỉ phú
Những quyết định tốt cho tuổi già
Nghỉ hưu trước 40 tuổi
Tránh mang nợ
Dùng thẻ tín dụng một cách khôn ngoan
Để tiền mua nhà hay đầu tư
6 điều giúp tôi bớt lo lắng về tiền bạc
Sinh Lão Bệnh Tử

Lập kế hoạch tài chính

Giới thiệu
Thu chi
Hưu trí
Kế hoạch
Bảo vệ nguồn thu nhập
Tăng thu nhập
Tính thời gian trả nợ
Tính số tiền trả góp
Tính thời gian tích luỹ
Tính số tiền góp dần

Đầu tư cổ phiếu

Đầu tư cổ phiếu
Quỹ đầu tư
Maxx - Phúc Lộc Thịnh Vượng
Sổ tiết kiệm hay Quỹ đầu tư?

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

Các loại bảo hiểm
Phí bảo hiểm nhân thọ
Bảo hiểm nhân thọ liên kết chung

Kinh nghiệm

Máy tính

GnuCash
Bắt đầu dùng GnuCash
Dùng GnuCash ghi chép các khoản tích luỹ lâu năm
Các phép tính tài chính cần biết
Tiện ích di động
Gói cước di động nội mạng
RaspberryPi
Trò chơi học làm giàu Cashflow
Tạo tài khoản Google
Phần mềm mã nguồn mở
Phần mềm tự do
Máy in phun
In sách nhỏ
Pin Lithium Ion
Fax từ Linux
Linux
Spam
Chặn những cuộc gọi tiếp thị
Nhiệt độ CPU
Home server cũ

Chữ Việt

Vị trí dấu thanh
Unicode
UTF-8
Web Việt

Linh tinh

Bếp
Tiêu thụ điện
Điện standby
Máy lạnh
Máy lạnh inverter
Nóng
Nhiệt độ một ngày
Tần số của TV
Ảnh
Hồng ngoại

Ý kiến

Bắt cá hai tay
Nguồn gốc sự giàu có
Đo độ giàu có
Xã hội thông tin
Dùng hàng Việt
Gần mực thì đen, gần đèn thì sáng
Thành ngữ về tiền
Tiền và Máu
Giả trá
Những cái nêm
Khác người
Đã lên báo

Giới thiệu

Trang bìa
Thông tin chung
Thành tích
Lịch hẹ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 4 tỉ chữ cái và các ký hiệu. Hiện nay Unicode mới chỉ dùng có 3 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 2 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ừ 1 tới 3 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 3 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ừ 1 tới 6 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 8 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 1 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 1 cho tới 5 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ó 5 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). 5 bit đủ để thể hiện 26 chữ in hoa. Còn các chữ số từ 0 đến 9 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 5 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 6 bit? Vì lúc đó (thế kỷ 19) bàn phím để nhập điện tín là bàn phím cơ có 5 phím để ấn bằng 5 ngón tay của 1 bàn tay, việc chế tạo bàn phím sinh ra 6 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à 7 bit mà không dùng luôn 8 bit của 1 byte? Tại vì đối với Anh ngữ thì 7 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 để qui đị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 6 nguyên âm và 1 phụ âm và có tới 6 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 2 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à 2 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 10 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 độ, 4 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 4 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.