• Thứ Tư, 07/04/2004 10:52 (GMT+7)

    Câu chuyện mã hóa Tiếng Việt và Unicode - Phải vượt qua ..tư duy xử lý 8 bit !

    Với Unicode, tất cả mọi dạng dựng sẵn và tổ hợp cho chữ Việt đều đã có sẵn để tự nhiên hình thành môi trường mới cho sự thống nhất sử dụng chữ Việt trên máy tính. Cần nắm vững các đặc trưng của Unicode để dùng được mọi tính năng ưu việt của nó, để vượt qua được những hạn chế của cách nghĩ và cách giải quyết vấn đề trong phạm vi... 8-bit như trước nay.

    Những khó khăn khi xây dựng bộ ký tự mã hóa chữ việt 8-Bit

    Chữ Việt khi được đưa vào máy tính, thời còn dùng bộ mã 8-bit, đã gặp rất nhiều khó khăn. Một mặt, do đặc điểm của cách ghi âm chữ Việt, dấu thanh được dùng thêm cho mỗi từ nên về mặt ngôn ngữ thì cách biểu diễn của chữ Việt là ghép dấu thanh với từ. Điều này có nghĩa: thành phần sinh cơ bản của chữ Việt chỉ có 33 chữ cái và 5 dấu thanh. Tuy vậy, do hạn chế của kỹ thuật in ấn, để biểu diễn chữ Việt, người ta cần tổ hợp cả dấu thanh và nguyên âm vào một hình chữ nên đã xuất hiện thêm 134 dạng biểu diễn ngoài bộ chữ cái, vốn chỉ có trong từ mà không có trong thành tố tạo nên chữ Việt.

    Mặt khác, vào thời kỳ 1980-1990, kỹ thuật tổ hợp còn chưa phát triển nên mặc dù việc xem xét chữ Việt dưới dạng thể hiện 134 ký tự dựng sẵn là không hợp với quy định truyền thống của ngôn ngữ nhưng thực tế vẫn buộc phải chấp nhận giải pháp của kỹ thuật áp đặt lên ngôn ngữ. Nhưng trong phạm vi 8-bit, nếu muốn giữ tương hợp với bộ mã ASCII, vốn đã chiếm hết 128 mã trong nửa đầu của bộ mã 8-bit, số mã còn lại cũng chỉ còn 128, không đủ để mã hoá cho 134 dạng biểu diễn thêm này. Kết quả là đã xuất hiện đến hơn 40 bảng mã khác nhau cho chữ Việt trong bộ mã 8-bit, làm cho việc xử lý chữ Việt chưa thể thống nhất được.

    Việc thử nghiệm các đề nghị mã hoá được tiến hành trong năm 1988, có sự hỗ trợ của tổ chức UNESCO nhằm đưa ra một khuyến cáo chính về cách mã hoá cho chữ Việt. Hội thảo về mã hoá các dấu phụ cho chữ Việt được tổ chức tại TP.HCM. Hội thảo đã đề xuất bảng mã ký tự tiếng Việt cho đại diện của UNESCO và kết quả này đã được chuyển tiếp cho Unicode. Tập các ký tự la-tinh mở rộng đã được lập ra để chứa thêm những ký tự mang dấu thanh của chữ Việt. Nhưng do sơ suất nào đó, trong đề nghị này thiếu mất 6 ký tự chữ Việt. Điểm nổi bật trong những tranh luận từ thời đó về mã hoá cho chữ Việt và kéo dài mãi cho tới bây giờ là: Mã hoá cho chữ Việt theo dạng dựng sẵn hay tổ hợp?

    Xu hướng kỹ thuật nghiêng về việc chọn cách mã hoá kiểu dựng sẵn, một mã cho mỗi dạng thể hiện của chữ Việt. Xu hướng ngôn ngữ nghiêng về đặc thù biểu diễn chữ Việt theo tính chất của bảng chữ thì chọn cách mã hoá tổ hợp, gắn dấu thanh và các dấu phụ vào nguyên âm. Xu hướng này lúc đó còn chưa được sự ủng hộ quốc tế, vì tổ chức Unicode còn chưa ra đời vào cuối những năm 1980. Lúc đó, Việt Nam còn bị cô lập với sự phát triển của CNTT trên thế giới, nhất là chưa có quan hệ với các nhóm công tác của ISO về mã hóa các ký tự cho các ngôn ngữ khác nhau. Vì vậy, những vấn đề nghiên cứu về mã hóa tổ hợp chưa được giới CNTT trong nước biết tới. Kết quả là xu hướng kỹ thuật thắng thế và các nhóm công tác về mã hoá chữ Việt nghiêng sang cách xây dựng các bảng mã dựng sẵn cho chữ Việt. Nhưng vì mâu thuẫn không giải quyết nổi về không gian mã hoá 8-bit có hạn và dạng mã hoá thêm cho các con chữ dựng sẵn của chữ Việt vượt quá giới hạn này, cho nên rất nhiều đề nghị mã hoá đưa ra mà không đề nghị nào là hoàn hảo cả.

    Có một quán tính với cách mã hóa dựng sẵn...

    Vào những năm 1985, Ngô Thanh Nhàn (Đại Học New York) đã đi theo hướng mã hoá tổ hợp và đề nghị tạo ra bộ mã chữ Việt dựa trên bộ mã ASCII của Mỹ, với việc mã hoá thêm cho các dấu phụ trong chữ Việt, cũng bằng các ký tự đã có sẵn trong ASCII. Các nghiên cứu này được tiếp tục và năm 1992 đã đưa đến bài viết của ba tác giả James Đỗ, Ngô Thanh Nhàn và Nguyễn Hoàng về mã hoá cho chữ Việt theo kiểu tổ hợp, dựa trên các nghiên cứu về cấu tạo chính tả của chữ Việt, đăng trên tạp chí Computer Standards & Interfaces.

    Hai nhóm kỹ thuật trong và ngoài nước đã cùng tham gia vào một nhóm nghiên cứu chung lấy tên là Tiểu Ban Chuẩn Hoá Mã Chữ Việt, thành lập theo quyết định của chủ nhiệm Uỷ Ban Khoa Học và Kỹ Thuật Nhà Nước vào tháng 12/1991. Kết quả: Tiểu Ban đã đưa ra một bản dự thảo về bộ mã chữ Việt, tiền thân của bộ mã chuẩn TCVN 5712, chuyển sang cho Trung Tâm Tiêu Chuẩn - Chất Lượng và Tổng Cục Tiêu Chuẩn - Đo Lường - Chất Lượng (TCĐLCL) để tiến hành xây dựng thành tiêu chuẩn quốc gia đầu tiên về CNTT. Sau hai năm nghiên cứu cài đặt, thảo luận chung, các chuyên gia trong và ngoài nước đã nhất trí đề nghị ban hành một tiêu chuẩn quốc gia về mã hoá 8-bit cho chữ Việt dùng trong trao đổi thông tin. Do cần đạt được sự thống nhất chung nên nhiều điểm trong bộ mã này đã là giải pháp dung hòa các yêu cầu của nhiều phía.

    Một số quan điểm liên quan tới bộ mã chuẩn TCVN 5712:

    1.  Tiêu chuẩn TCVN 5712 chấp nhận cả hai kiểu mã hóa, và thừa nhận hai bảng mã có giá trị như nhau: dựng sẵn (VN1) và tổ hợp (VN2).

    Bảng mã VN3 thuộc dạng dựng sẵn nhưng không đầy đủ nên chỉ là một giải pháp tình thế và được đặt trong Phụ Lục của tiêu chuẩn TCVN 5712.

    2.  Từ năm 1987, một số chuyên gia Việt Nam đã liên tục bảo vệ quan điểm tổ hợp và đến năm 1993 quan điểm này đã chính thức được thừa nhận trong TCVN 5712 thông qua bộ mã VN2. Tuy cách bố trí cụ thể các điểm mã trong VN2 khác với dự thảo 8859-V la-tinh/Việt nhưng tư tưởng cơ bản vẫn giữ nguyên. Vì là bộ mã la-tinh/Việt nên cách bố trí các điểm mã của 8859-V la-tinh/Việt đã cố gắng đáp ứng được tối đa yêu cầu của các ngôn ngữ la-tinh khác, đó là điều mà VN2 không quan tâm đến.

    3.  Microsoft đã chọn quan điểm tổ hợp của VN2, với cách sắp xếp các điểm mã đã được cải biến lại cho thích hợp với công nghệ hiện đại.

    Sau khi bộ mã chuẩn TCVN 5712 ra đời, một số công ty đã đưa vào sử dụng nhưng vẫn chưa coi là bộ mã chính cần tuân thủ. Họ vẫn dùng các bộ mã riêng của mình, chỉ thêm phần chuyển đổi sang bộ mã chuẩn. Vì vậy, năm 1995, Ban Chỉ Đạo Chương Trình Quốc Gia (CTQG) về CNTT đã quyết định cho triển khai xây dựng một bộ phần mềm hỗ trợ cho việc sử dụng chữ Việt theo bộ mã chuẩn TCVN 5712, với tên ABC.

    Một vấn đề nảy sinh: các công ty CNTT quốc tế bắt đầu đi vào hoạt động tại Việt Nam từ những năm 1995, đã và đang tiến hành bản địa hoá các sản phẩm phần mềm của họ. Vấn đề đầu tiên với các công ty lớn là phải xây dựng các trang mã cho chữ Việt trên các hệ thống của họ. Bộ mã dựng sẵn trong tiêu chuẩn TCVN 5712:1993 không đáp ứng được yêu cầu của các công ty lớn này vì nó là sự thoả hiệp của nhiều yếu tố và chưa giải quyết được việc tích hợp chữ Việt với nhiều thứ tiếng khác trên thế giới. Các công ty CNTT quốc tế đều thừa nhận nhu cầu sử dụng cách mã hoá tổ hợp cho chữ Việt (kiểu VN2 được sắp xếp lại) và không chấp nhận cách mã hoá dựng sẵn.

    Từ năm 1996, đã có rất nhiều bàn cãi của các chuyên gia CNTT trong nước về việc có chấp nhận cách mã hoá tổ hợp hay không, do hầu như kỹ thuật xử lý tổ hợp chưa được phổ cập trong nước. Nhiều người chờ đợi kết quả cài đặt của các công ty CNTT quốc tế trước khi có ý kiến chính thức. Một số chuyên gia CNTT trong và ngoài nước đã đưa ra đề nghị xây dựng bộ mã chuẩn mới dựa hoàn toàn trên công nghệ tổ hợp, đề nghị mang tên 8859-V, thực chất vẫn là VN2 có cải tiến thêm. Đề nghị này đã được Tiểu Ban Chuẩn thuộc Ban Chỉ Đạo CTQG về CNTT ủng hộ và được chuyển sang cho Ban Kỹ Thuật CNTT thuộc Tổng Cục TCĐLCL xem xét. Đồng thời, đề nghị này cũng đã được đưa ra thảo luận trong phạm vi chuyên gia của Nhóm công tác SC2/WG3 gồm các chuyên gia mã hoá quốc tế xem xét và đóng góp thêm ý kiến, trước khi WG3 đề nghị cơ quan tiêu chuẩn quốc gia của Việt Nam trình dự thảo chính thức.

    Trong khi đó, Microsoft đã kết hợp với các chuyên gia Việt Nam xây dựng trang mã CP 1258, hoàn toàn trùng với 8859-V (như nói ở trên, 8859-V thực chất là TCVN 5712 VN2 cải biên) và dùng cho Windows. Microsoft đã có các sản phẩm Windows 95 và Office 97 bản địa hoá cho chữ Việt chạy với trang mã CP 1258. Đầu năm 1997, IBM cũng đã chấp nhận trang mã CP 1129 cho chữ Việt để dùng trong các máy tính của họ, khác với CP 1258 chỉ ở 3 vị trí mã không ảnh hưởng tới chữ Việt. Chúng ta thấy sự quay trở lại của xu hướng mã tổ hợp, khi được tiếp sức của tiến bộ công nghệ trên thế giới, và cũng thấy xu hướng kỹ thuật phải phục vụ cho thực tế ngôn ngữ đã được chứng minh. Tuy nhiên, quán tính quen thuộc với cách mã hoá dựng sẵn vẫn còn kéo dài một thời gian trong những người phát triển phần mềm trong nước, và việc chưa tiếp thu được tri thức mới về mã hoá tổ hợp dẫn tới sự ngần ngại, không nhanh chóng nắm bắt các kỹ thuật và quan niệm mới.

    Bộ mã chữ quố ngữ TCVN 6909:2001 và... vấn đề của chúng ta

    Để thúc đẩy việc đưa kỹ thuật xử lý mã tổ hợp vào trong nước, cuối năm 1997 và trong năm 1998, Tiểu Ban Chuẩn CNTT kết hợp cùng công ty FPT đã xây dựng Nhóm nghiên cứu thử nghiệm các kỹ thuật xử lý mã tổ hợp, với thành viên là những người nghiên cứu phát triển của các công ty. Nhóm nghiên cứu đã đề nghị Trung Tâm Tiêu Chuẩn sớm cho ban hành bộ mã chữ Việt kiểu tổ hợp. Mặt khác, qua việc nghiên cứu này, Nhóm thấy cần có một tài liệu mô tả về các đặc trưng chữ Việt trong CNTT làm nền tảng cho việc cài đặt xử lý chữ Việt. Từ đó, tài liệu 'Đặc tả các vấn đề tiếng Việt trong CNTT' đã được biên soạn.

    Việc phát triển rộng rãi của mạng máy tính và các ứng dụng trên web ngày càng làm lộ ra những nhược điểm của bộ mã 8-bit chữ Việt, vì một số mã chúng ta dùng để mã hoá chữ Việt thì các công ty phần mềm quốc tế, theo quy định của chuẩn quốc tế, lại sử dụng theo mục đích của mình nên không hiển thị được vài chữ Việt trên web. Điều này dẫn tới việc chúng ta phải chuyển sang dùng bộ mã mới, tương hợp với các chuẩn quốc tế.

    Bước sang thiên niên kỷ mới, Bộ Khoa Học, Công Nghệ và Môi Trường đã yêu cầu Tổng Cục TCĐLCL ban hành bộ ký tự quốc ngữ mã hoá dựa trên Unicode với tên gọi TCVN 6909:2001. Bộ ký tự này dự định sẽ là bộ ký tự thống nhất dùng cho xử lý và truyền thông chữ Việt. Mới đây, Chính Phủ đã ấn định thời hạn để đưa bộ mã này vào sử dụng chính thức là từ tháng 1/2003. Đây là một quyết định sáng suốt và kịp thời về tổ chức để thúc đẩy sự thống nhất về xử lý chữ Việt trên máy tính hoà cùng sự phát triển của quốc tế. Và sẽ tốt hơn nữa nếu trong thời gian tới, chúng ta ban hành một tiêu chuẩn Việt Nam bao hàm toàn bộ Unicode/ISO 10646.

    TCVN 6909:2001 được xây dựng hoàn toàn là sự kế thừa của tiêu chuẩn Unicode/ISO 10646, thừa nhận tất cả các điểm mã đã được gán cho các ký tự chữ Việt, kể cả các ký tự dựng sẵn lẫn tổ hợp. Tiêu chuẩn này còn quy định thêm: những gì không được nêu trong tiêu chuẩn thì sẽ dựa theo các điều khoản đã được quy định trong Unicode. Do đó, với tiêu chuẩn này, chữ quốc ngữ của chúng ta hoàn toàn được sự hỗ trợ của các kỹ thuật mới và công nghệ mới, đi vào luồng phát triển chung cùng thế giới, không còn là một 'ốc đảo' tách biệt, tự mình phải làm mọi việc Việt hoá như thời 8-bit với đủ mọi loại bảng mã. Điều này mang ý nghĩa rất quan trọng và có tính chiến lược cho sự phát triển CNTT ở nước ta.

    Trước đây với bộ mã 8-bit, chúng ta không có cách nào thống nhất được việc sử dụng một bộ mã cho chữ Việt trong các hoạt động trao đổi thông tin giữa các máy tính trên thế giới. Sự không thống nhất này bắt nguồn từ những đòi hỏi kỹ thuật không phù hợp cho việc biểu diễn đầy đủ chữ Việt dưới dạng dựng sẵn. Mặt khác, kỹ thuật tổ hợp dùng cho các mã hoá 8-bit, mặc dù có ưu điểm tiết kiệm mã mà vẫn biểu diễn đầy đủ cho chữ Việt, lại ra đời tương đối muộn, khi cả thế giới đang chuyển sang dùng bộ mã đa ngữ nên đã không được phát triển trong nước. Nay với bộ mã dựa theo Unicode, chúng ta đi tới sự thống nhất hoàn toàn trên quy mô quốc tế cho việc dùng chữ Việt trên máy tính. Không có một đề nghị mã hoá nào khác khả dĩ thay thế cho bộ ký tự chuẩn  TCVN 6909 hiện tại.

    Trong thực tế, người dùng cuối không quan tâm tới những chi tiết thực hiện bên trong máy, đây là việc của người làm phần mềm. Nhưng trong những trao đổi rộng rãi, nhiều khi các cảm giác về chữ đẹp xấu của người dùng lại được đưa ra như một 'luận cứ' để phê phán về cách biểu diễn mã hoá nào đó. Đây không phải là lý do có tính thuyết phục về cách mã hoá, mà hoàn toàn là vấn đề kỹ thuật cài đặt. Hôm nay chữ chưa đẹp thì ngày mai sẽ đẹp hơn. Cho nên đấy không phải là tiêu chuẩn để xem xét về mã hoá.

    Khi Unicode được phát triển và đưa vào sử dụng thì tất cả mọi dạng dựng sẵn và tổ hợp cho chữ Việt đều đã có sẵn trong bộ ký tự này, từ đó tự nhiên hình thành môi trường mới cho sự thống nhất sử dụng chữ Việt trên máy tính. Vấn đề ở đây là chúng ta cần biết các đặc điểm và đặc trưng của Unicode để dùng được mọi tính năng ưu việt của nó, và do đó vượt qua được những hạn chế của cách nghĩ và cách giải quyết vấn đề trong phạm vi 8-bit.

    Nói riêng, các kỹ thuật xử lý ký tự tổ hợp cần được nghiên cứu kỹ lưỡng và làm chủ, bởi vì đây là phát triển kỹ thuật mới đi cùng với Unicode. Nếu chỉ bằng lòng với các mã dựng sẵn cho chữ Việt và phát triển phần mềm theo chiều hướng này, thì chúng ta sẽ không kế thừa được những tiến bộ công nghệ mới, và sản phẩm chúng ta làm ra cũng sẽ không đáp ứng được yêu cầu của thị trường thế giới vì nhiều ngôn ngữ trên thế giới sử dụng hoặc cách mã hoá dựng sẵn hoặc cách mã hoá tổ hợp ký tự.

    Một vấn đề nhiều người thắc mắc là với việc dùng Unicode mã hoá cho chữ Việt thì phải dùng dạng biểu diễn nào để đảm bảo sự thống nhất cho thông tin lưu giữ? Có băn khoăn là lưu giữ dưới dạng mã Unicode dựng sẵn khác với dạng tổ hợp và do đó các phần mềm có thể không xử lý đúng đắn cho chữ Việt. Đây là băn khoăn của những người làm phần mềm vẫn quen với tư duy xử lý 8-bit và chưa làm quen với cách xử lý của Unicode. Phần mềm làm việc với Unicode cần phải giải quyết cho mọi dạng biểu diễn trong suốt với người dùng, đó là yêu cầu và thành tựu mà Unicode đã đạt được. Nếu tự giới hạn mình vào một cách mã hoá thôi thì chúng ta chưa nắm hết tinh thần của Unicode vốn giải quyết cho mọi cách mã hoá.

    Cho nên vấn đề không phải là ở cách mã hoá ký tự, mà ở trong chính chúng ta: Ta tự nâng mình lên một tầm mức mới thế nào khi cả thế giới đều đã đi vào chung con đường Unicode?

    Mặt khác, do Unicode chấp nhận cả cách mã hoá dựng sẵn và tổ hợp ký tự nên chúng ta cũng cần phát triển các bộ lọc chung để chuyển đổi giữa các loại mã dựng sẵn và tổ hợp. Ngoài ra, chúng ta có thể đề xướng và phát triển thêm những trình tiện ích xử lý chữ Việt khác như tìm kiếm thông tin chữ Việt trên mạng, kiểm tra chính tả... Một thư viện dùng chung cho vấn đề này là có ích lợi cho tất cả mọi người làm phần mềm. Liên quan tới điều này còn có cả việc cần có một quy định chuẩn về vị trí của các dấu thanh đặt trong từ.

    Ngô Trung Việt

    ID: B0208_14