• Thứ Sáu, 26/03/2004 15:29 (GMT+7)

    Sử dụng loại Unicode tiếng Việt nào? Người sử dụng cần biết sự thật!

    Cơ may thống nhất đến với tiếng Việt trên máy tính chính là việc đưa bộ mã tiếng Việt vào bảng mã Unicode cho "tất cả các ngôn ngữ trên toàn cầu". Thế nhưng trong khi bảng mã tiếng Việt Unicode 1258 đã trở thành chuẩn theo luật và chuẩn thực tế, đồng thời thực sự đã sẵn sàng mọi thứ để dùng một cách tự nhiên thì... "đùng một cái", Bộ Khoa Học, Công Nghệ và Môi Trường (KHCN&MT) tạo nên "luật chơi" riêng khi đưa ra bộ mã dựng sẵn theo Dự Thảo 6909. Lý do thật sự để đưa ra bộ mã này là gì?

    Tiếng Việt trong Unicode đã được các công ty phần mềm lớn nhất thế giới như Microsoft, Oracle và cả IBM bắt đầu chú trọng và phát triển từ năm 1994-1995; và Việt Nam cũng đã chính thức đưa ký tự tiếng Việt do Microsoft đề nghị (còn gọi là bảng mã CP 1258), cùng  khoảng 5.000 chữ Nôm vào Unicode.

    Quả thật, bản tiếng Việt Unicode 1258 của Microsoft cho Win 95, Win 98 còn khá vụng về, nhất là chữ còn xấu do dấu còn lệch so với chữ. Nhưng ngoài nhược điểm trên, ngay trong Win 98, tiếng Việt trên Unicode đã được xử lý khá tốt. Đến các bản Windows Me, Windows 2000 và Windows XP, chữ Việt cũng đã thể hiện khá đẹp, nhất là trên bản in ra. Tuy nhiên, điều quan trọng nhất là Microsoft đã xây dựng các tiện ích xử lý ngôn ngữ rất tốt. Và nếu quan tâm đến Linux, bạn sẽ thấy hệ điều hành (HĐH) này cũng đã hỗ trợ CP 1258...

    Chuyện của "Lệ Làng"

    Bộ mã Unicode CP 1258 của Microsoft đã giải quyết những vấn đề cơ bản, đồng thời HĐH Windows sau này như Me, 2000, XP đã cung cấp những công cụ hệ thống để giúp tạo ra những ứng dụng tiếng Việt đúng chuẩn đề ra cho Unicode như:

    -  Phân biệt được trong chuỗi ký tự, đâu là tiếng Việt, đâu là tiếng Anh,... như thế mới là "Tiếng Anh cũng chỉ là một ngôn ngữ trên máy tính" thông qua Unicode. Do đó, hiện tiếng Việt (Unicode 1258) đang được sử dụng bình đẳng, cực kỳ dễ dàng với hàng trăm ngôn ngữ phổ biến khác.

    -  Xử lý đúng đắn các phép biến đổi trên chữ Việt (như chữ thường sang chữ hoa); các phép xử lý chuỗi ký tự đa ngữ cần thiết cho các bài toán sắp thứ tự, tìm kiếm, v.v...

    Thế nhưng cũng như trường hợp TCVNxxxx, lệ làng của việc ra đời một chuẩn về bộ mã tiếng Việt lại phải kèm theo một phần mềm xử lý tiếng Việt do Bộ KHCN&MT hỗ trợ. Nếu như lấy Unicode 1258, chắc cũng chẳng có việc gì làm nhiều. Nhưng bộ mã chữ Việt theo TCVN 6909 đưa ra đến hai bộ mã: một lấy nguyên si của MS CP1258, và một bộ mã khác tạm gọi là bộ mã dựng sẵn. Tiếc thay, bộ mã này và một số cài đặt của nó đã vi phạm ngay chính nguyên tắc "chuẩn phải đi theo người sử dụng, và kỹ thuật phải đi theo chuẩn":

    1. Chưa được chấp nhận bởi tổ chức Unicode và chưa được các hãng phần mềm nào (trong đó có Microsoft, IBM, Oracle) hỗ trợ, do đó:

    -  Các HĐH (như Windows) và các ứng dụng (như MS Office) xem đầu ra của bộ mã dựng sẵn này là... tiếng Anh chứ không phải tiếng Việt. (Ví dụ: có nhiều dấu nặng (.) trong bảng mã Unicode; nhưng nếu dùng đúng CP 1258, Windows có thể tự phân tách ra là dấu nặng của ngôn ngữ nước nào. Còn hiện nay, Windows đương nhiên coi đoạn mã tạo bằng mã dựng sẵn 6909 là tiếng Anh cả. Điều này có thể kiểm tra ngay trên hiển thị ở cuối màn hình trong các ứng dụng MS Office).

    -  Các hàm xử lý ngôn ngữ, đã dựng sẵn (native) trong hệ thống (như Windows) không biết đến loại mã này, do đó cho kết quả xử lý không như ý người sử dụng (mà người ta không biết tại sao).

    -  Do không có thông tin ngôn ngữ, nếu muốn giải quyết những vấn đề liên quan đến xử lý đa ngôn ngữ thì "chuyên gia" phải dùng các xảo thuật "phi chuẩn" cho từng ngôn ngữ một. Vì vậy, bộ mã này không thể được dùng để phát triển các phần mềm có tính đa ngôn ngữ để bán ra quốc tế được, làm hạn chế việc xuất khẩu phần mềm và hội nhập thế giới (tự mình cắt đường hội nhập!).

    Như thế, việc đưa ra bảng mã dựng sẵn này có đi theo nhu cầu của người sử dụng không?

    2. Các phần mềm hỗ trợ tiện ích cho tiếng Việt, nhất là từ người của Ban Công Tác Unicode thì có khuynh hướng cố tình hỗ trợ bộ mã dựng sẵn thấy rõ:

    -  Tiện ích chuyển mã đều đưa các mã khác về bộ mã dựng sẵn (không đưa về mã Unicode CP1258).

    -  Chỉ ghi chú bên cạnh tùy chọn bộ mã dựng sẵn là "TCVN 6909"; gây hiểu lầm cho người sử dụng đây mới là tiêu chuẩn.

    Kỹ thuật ở đây đã không tuân thủ chuẩn quốc tế mà theo cái tự mình đặt ra và có ý cưỡng đặt cộng đồng phải theo!

    Lý do thật sự là gì?

    Các chuyên gia khi viết những ứng dụng xử lý ngôn ngữ, để đảm bảo chất lượng và sự ổn định, thường có khuynh hướng sử dụng chính những công cụ xử lý ngôn ngữ của các hãng lớn làm, nhất là khi nó đã có sẵn ở mức hệ thống - native - (và lại miễn phí!) chứ không mấy ai can đảm đi dùng những công cụ đem gán (và thay thế) những công cụ có sẵn.

    Lý do là: Chất lượng không đảm bảo do không được kiểm tra đầy đủ trên hàng ngàn ứng dụng chính chạy trên HĐH Windows chẳng hạn, nên cứ mỗi lần HĐH thay đổi qua phiên bản mới thì những "công cụ đem gán" (và phải... trả tiền) đó bao giờ mới được nâng cấp và kiểm nghiệm đủ độ tin cậy?

    Công việc cơ bản nhất phải là thuyết phục được chính nhà sản xuất HĐH hỗ trợ thêm bộ mã dựng sẵn ở mức hệ thống chứ không nên gán ghép trách nhiệm cho những "chuyên gia" trong nước phải can thiệp vào hệ thống HĐH; nhất là trong tình hình 99% người Việt vẫn đang dùng Windows. "Chuyên gia" phát triển ứng dụng cũng càng cần phải biết mình làm việc với bộ mã nào để chọn kỹ thuật xử lý cho đúng chứ không thể nói rằng "dựng sẵn hay tổ hợp rồi ra cũng không phải là vấn đề của người lập trình ứng dụng". Nếu thế thì cần những phần mềm kiểu như FreeCode hoặc VietFlex làm việc với mã nào cũng được chứ cần chi phải thống nhất về Unicode.

    Vấn đề dùng một bộ mã tiếng Việt cho toàn thể người Việt cũng như thế giới sử dụng là một công việc rất quan trọng - cần phải nghe và hiểu ý kiến từ nhiều phía, trong đó có chuyên gia.

    Không  thể gán ghép hoặc quy kết cho những cuộc thảo luận liên quan đến quyền lợi người sử dụng chỉ là của mấy "ông chuyên gia" nhìn trong góc độ hạn hẹp được; vì dữ liệu của người sử dụng và việc xử lý dữ liệu đó liên quan mật thiết đến vấn đề này. Những quy kết đó phải chăng là những "ngộ nhận" do thiếu thông tin?

    Sự thật là không có chuyên gia nào có hiểu biết và kể cả người sử dụng, tự xếp mình vào "trường phái" nào cả. Đối với đại đa số người sử dụng, người ta chỉ cần quan tâm đến vấn đề hiển thị (trên màn hình và in ra giấy) và trao đổi thông tin có chữ Việt được tốt và suôn sẻ hay không? Đối với các chuyên viên kỹ thuật, đó là làm ra được những ứng dụng được đại đa số người sử dụng chấp nhận và muốn như thế, phải tuân thủ theo các chuẩn thực tế (de facto standard) được chấp nhận rộng rãi và đã qua thử thách, có những cài đặt thực tế chứ không phải thường chỉ ở trên giấy như chuẩn theo luật (de jure standard), hoặc tệ hơn là những cưỡng đặt không hợp lý.

    Theo ý kiến chủ quan của chúng tôi thì CP 1258 là bộ mã quốc tế và đã được hỗ trợ đầy đủ trên những ứng dụng thông dụng như MS Office và tạo ra được thực sự các ứng dụng đa ngữ trên HĐH và CSDL thông dụng,... nghĩa là đã đáp ứng tốt nhu cầu của người sử dụng.

    Còn bộ mã dựng sẵn theo Ban Công Tác Unicode thì nên dùng trong trường hợp nào? Có lợi cho sự thống nhất chữ Việt trong xử lý thông tin không?

    Lý do thật sự để đưa ra bộ mã này là gì?

    Chuyển sang Unicode thật không đơn giản

    Thực tế rất nhiều đơn vị đã "lãnh đủ" vì nhân viên trong cơ quan không phân biệt được hai loại này: người thì dùng bảng mã dựng sẵn; người thì dùng bảng mã tổ hợp; thậm chí trên cùng một tập tin (file) có cả hai thứ mã, dẫn đến những hậu họa khôn lường mà nhiều khi phải một thời gian (cũng không lâu) sau mới thấy được.

    Nếu bảng mã dựng sẵn được Việt Nam đăng ký vào Unicode sớm và làm việc chặt chẽ với các hãng lớn để họ ủng hộ ngay từ đầu thì chắc chẳng có gì phải bàn (hay rồi sẽ sinh ra một lệ làng khác?). Còn nếu muốn duy trì hiện trạng của 6909 thì phải quy định rõ hoặc khuyến cáo hết sức cụ thể khi nào dùng mã nào và phải chú ý đầy đủ việc chuyển đổi giữa hai bảng mã này thật tốt, chứ không thể chỉ một chiều độc quyền như hiện nay.

    Chuyển đổi sang bộ mã mới là chuyện "chẳng đặng đừng" vì nó gây tốn nhiều thời gian công sức và khó chịu trong thời gian dữ liệu bị "nửa nạc, nửa mỡ". Công việc này còn khổ hơn là việc nâng cấp toàn bộ máy trong đơn vị lên HĐH mới. Do đó, cần phải có tài liệu giải thích rõ và hướng dẫn từng bước triển khai để đảm bảo tính nhất quán của dữ liệu trong đơn vị, giảm thiểu việc gây xáo trộn lớn (cũng phải cẩn thận như đối phó với sự cố Y2K vậy). Đơn vị càng lớn, càng phải chú trọng việc quản trị đề án và phòng ngừa rủi ro cho công việc chuyển lên bộ mã mới. Công việc này cũng như quy trình xây dựng, nếu để càng lún sâu rồi mới sửa thì chi phí vọt lên đến cấp số nhân. Chuyển sang Unicode không thể chỉ đơn giản là ban hành ra một văn bản và đưa ra một phần mềm ẩn chứa quá nhiều điều rủi ro và mập mờ.

    Mục đích của bài viết này chỉ nêu lên những sự kiện thực tế nằm sau các chữ Việt đẹp đẽ hiện lên màn hình hay in ra trên các văn bản; không nhằm phê phán - là quyền dành cho Người Sử Dụng sau khi họ biết được sự thật cùng những quyền lợi, rủi ro và thách thức đi cùng với quyền chọn lựa của mình.

    Có thể xem thêm thông tin tại các web site:

    www.unicode.org
    www.lacviet.com.vn/download

    Hà Thân

    ID: B0206_20