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

    Unicode, nhìn từ nhà doanh nghiệp CNTT

     

    Từ sự 'lúng túng' biết chọn Unicode nào đây cho một doanh nghiệp CNTT cỡ lớn ở Việt Nam, tác giả hướng về... chuẩn công nghiệp theo các nguyên tắc: Mã hóa chữ Việt cần tuân thủ thông lệ ngôn ngữ Việt và phù hợp với cộng đồng CNTT thế giới.


    Chúng tôi đang lúng túng vì 'Unicode But It's not... Unique'

    Sau khi có quyết định của Chính Phủ về việc triển khai bộ mã Unicode 6909, với tư cách là CIO (PCW-B: giám đốc thông tin) của một công ty có khối lượng lớn thông tin, tôi đã lên kế hoạch chuyển đổi dữ liệu điện tử của công ty sang TCVN 6909, dự kiến hoàn thành vào tháng 1/2003. Một khối lượng rất lớn công việc và không dễ thực hiện, do công ty chúng tôi có nhân viên và khách hàng ở Bắc-Trung-Nam, ở cả nước ngoài, có cả Việt kiều.

    Thế nhưng trở ngại đầu tiên là biết chọn Unicode nào đây? Lúc đầu, tôi không biết là 'Unicode but it's not Unique'. Chỉ sau khi PC World VN  các số gần đây đăng tải các bài về TCVN 6909, nhất là về lựa chọn mã tổ hợp hay mã dựng sẵn, tôi mới hay là chúng tôi đang đứng trước một khó khăn, tương như bao nhiêu năm qua, là lựa chọn mã Unicode nào?

    Dựng sẵn chăng (đang được nhiều nơi sử dụng, có bộ gõ Vietkey dễ cài, cùng các font Windows tương đối đẹp), hay tổ hợp (được Microsoft hỗ trợ trong các môi trường và phần mềm của nhà khổng lồ này, nhưng mới được có ít font, bộ gõ thì không tiện dùng, bởi chúng tôi vốn ưa kiểu gõ Telex)?

    Các nhà 'Unicode học' nói rằng tổ hợp hay dựng sẵn không quan trọng, miễn sao phần mềm hỗ trợ Unicode là được. Phải chăng như vậy các nhà viết phần mềm (cho dù Việt Nam hay quốc tế) một khi muốn hỗ trợ Unicode đều phải biết hỗ trợ cả hai loại mã? Ví dụ, phép sắp xếp từ vựng tiếng Việt phải biết xếp cho cả hai loại mã? Rồi nếu chương 'Mở đầu' một người lưu mã này, phần 'Phụ lục' một người khác soạn thảo lưu mã khác, khi ghép thành một tài liệu (gồm cả hai loại mã, phần hiển thị không có vấn đề vì cả hai là Unicode) thì việc sắp xếp, tìm kiếm, làm chỉ mục... có ổn không? Mà phần mềm thì có hàng trăm, hàng nghìn người làm, các hãng CNTT đa quốc gia (làm phần cơ sở, phần nền OS, DB), các nhà viết công cụ (sắp xếp, tìm kiếm...), các người viết ứng dụng (ngân hàng, hàng không, quản lý nhân sự...), liệu cả người Việt lẫn người nước khác có hiểu và xử lý đúng chữ Việt cho chúng tôi hay không? Hay là để cho chắc ăn, tôi lại phải có bộ chuyển đổi nào đó, giống như hiện nay?

    Về nguyên tắc mã hóa chữ việt

    Có thể nói: Nguyên tắc đầu tiên của mã hóa chữ Việt là tính duy nhất. Đó chỉ là vấn đề toán học. Ngoài tính duy nhất, tính đầy đủ, tính đơn giản cũng đáng được nêu ra. Tuy nhiên, chữ viết trước hết là vấn đề ngôn ngữ. Cho nên mã hóa chữ Việt cần tuân thủ thông lệ của ngôn ngữ, của tiếng Việt. Việc coi chữ Việt là gồm các nguyên âm và các dấu riêng biệt (khi đó chữ Việt bao gồm 33 chữ cái, hay con chữ, và 5 dấu thanh), hay coi a, à, á, ả, ã, ạ,... là chữ cái (khi đó chữ Việt có 93 chữ cái,  nhưng không có dấu thanh nữa) lại chính là một vấn đề ngôn ngữ. Đây cũng là mấu chốt của việc mã hóa tổ hợp hay dựng sẵn, đã và đang được thảo luận rộng rãi. Với trường hợp dựng sẵn, để mã hóa cả chữ hoa và tương hợp với ASCII, không gian 8-bit là không đủ.

    Một nguyên tắc rất đáng được quan tâm là phù hợp với cộng đồng CNTT thế giới. Việt Nam là nước đi sau trong CNTT, chủ yếu là ứng dụng thành quả của các nước tiên tiến khác. Ngay như chữ viết của tiếng Việt (còn được gọi là chữ quốc ngữ để phân biệt với chữ Nôm) cũng do người nước ngoài nghĩ ra, chúng ta thừa hưởng hệ chữ la-tinh. Ứng dụng CNTT trong ngôn ngữ đã được bao nhiêu hãng khác nghiên cứu, nên việc phù hợp với cộng đồng CNTT thế giới là một nguyên tắc cần tuân thủ. Nếu không, chúng ta lọ mọ tự làm một núi việc đã được giải quyết, một việc không cần thiết tí nào trong bối cảnh toàn cầu hóa đang diễn ra mạnh mẽ trên tất cả các lĩnh vực, mà mạnh mẽ nhất chính là trong CNTT. Chưa kể những gì chúng ta làm có thể manh mún, không cơ bản, không đi xa lâu dài được.

    Các vấn đề trong xử lý chữ Việt

    Cũng giống bất cứ một ngôn ngữ nào khác, các vấn đề chính của xử lý chữ Việt trong CNTT là: mã hóa, lưu trữ, hiển thị, xử lý và trao đổi.

    Cá nhân tôi cho rằng hiển thị là vấn đề thứ yếu. Tôi được biết kiểu mã nào cũng hiển thị được hết, và đó là việc của môi trường nền, và không phải là quá khó, vì người Việt cũng đã tự làm được trên Windows. Vì thế, nên tách hẳn vấn đề hiển thị ra khỏi vấn đề mã hóa. Chúng độc lập với nhau, và hiển thị cần tuân thủ mã hóa chứ không phải mã hóa cần lưu ý tới khía cạnh hiển thị trong một số môi trường như nhiều bạn trình bày gần đây.

    Rõ ràng, mã hóa có tính quyết định hơn tất cả. Nếu mã hóa là duy nhất thì các vấn đề lưu trữ, xử lý và trao đổi sẽ đơn giản đi nhiều. Đó chính là điểm mà tôi, như một người sử dụng, muốn nêu lên cho các bạn làm mã và ban hành mã nên lưu ý thêm.

    Việc TCVN 6909 cho phép hai cách mã chữ Việt làm chúng tôi hoang mang nhất. Tôi chưa hình dung ra lời giải cho bài toán nếu chi nhánh ở TP.HCM của công ty tôi gửi hồ sơ điện tử nhân viên ra Hà Nội, và giả sử các hồ sơ này được mã hóa khác với ở Hà Nội thì làm sao tôi tìm được có bao nhiêu nhân viên có tên là Tuấn?

    Cá nhân tôi rất mong mỏi có được một bộ mã chữ Việt duy nhất. Chúng tôi không quan tâm là dựng sẵn hay tổ hợp, không quan tâm nhiều tới 8-bit hay 16-bit dùng để mã. Không lẽ khi có Unicode rồi, chúng ta vẫn sẽ có nhiều cách mã như bao nhiêu năm qua?

    Về mã tổ hợp và mã dựng sẵn

    Hãy trở lại khía cạnh ngôn ngữ. Trong nói (đánh vần) và viết chữ Việt, việc tách dấu khỏi con chữ, khỏi từ là thực tế. Khi viết, chúng ta thường viết dấu sau cùng và viết nó lên trên (hay xuống dưới cho dấu nặng) nguyên âm mà nó phải đi cùng. Tương tự như thế cho đánh vần, chúng ta đánh vần dấu sau cùng. Vì vậy, coi {à, á, ả, ã, ạ,..} là các con chữ (chữ cái) dựng sẵn để mã hóa là không tự nhiên về ngôn ngữ. Chưa kể về số lượng sẽ có quá nhiều chữ cái, và chúng ta đã phải trả giá khi bị giới hạn ở không gian 8-bit. Về tính đơn giản, bạn thử đối chứng bảng mã TCVN 5712 với CP 1258 (của Microsoft) mà xem. Tôi đã thử đưa chúng ra cho một số bạn không phải là chuyên gia CNTT để họ bình luận thì tất cả họ đều hỏi tại sao cái TCVN 5712 lại phức tạp thế (!).

    Thực tế, chúng ta đã không có được một bảng mã 8-bit đơn giản thuần túy tổ hợp cho chữ Việt. Tôi rất hiểu vào đầu những năm 1990, việc cài đặt kiểu tổ hợp là rất khó khăn cho anh em trong nước (tuy VNI cũng đã được cài đặt ở nước ngoài theo kiểu tổ hợp). Nhưng sau khi có Windows 95, rồi 98, khó khăn trên đã được giải quyết, vào thời điểm 1997 nhóm FreeCode đã thực hiện được việc hiển thị mã tổ hợp trên Windows. Một số anh em đã đề xuất  bảng mã 8859-V (rất gần với bảng mã CP 1258 của Microsoft và CP 1129 của IBM đề xuất cho chữ Việt) như một chuẩn 8-bit nữa của chữ Việt, bên cạnh TCVN 5712. Các nước châu Âu đều có bảng mã này, một họ 8859 cho các ngôn ngữ Âu châu, trong đó có các ngôn ngữ gốc la-tinh giống như tiếng Việt. Tuy nhiên, đề xuất này không được Tổng Cục Tiêu Chuẩn - Đo Lường và Chất Lượng  phê duyệt vì Nhóm làm việc về mã không thống nhất được ý kiến. Các anh em kỹ thuật (khá đông trong nhóm) đã không ủng hộ 8859-V, các anh đã tư duy rất gắn với sự cài đặt dựng sẵn, vốn đã được triển khai sâu rộng ở miền Bắc.

    Cá nhân tôi vẫn mong có bảng mã 8859-V, như một bảng mã có ý nghĩa khoa học trong không gian 8-bit, không gian cơ sở có ngữ nghĩa của biểu diễn thông tin, cho dù ý nghĩa triển khai thực tế bây giờ không cần thiết.

    Một khía cạnh khác cho dựng sẵn hay tổ hợp là tiêu chuẩn phù hợp với cộng đồng CNTT thế giới. Ngoài Microsoft, kẻ thống trị phần mềm cho hơn 80% máy tính cá nhân, loại máy tính liên quan nhiều nhất đến nhập và xuất dữ liệu chữ Việt (tại Việt Nam có lẽ con số đó là 99%), IBM - một nhà cung ứng chủ yếu mainframe và là nhà có thị phần rất lớn Unix, cũng đã chọn kiểu mã hóa tổ hợp. Chúng tôi đã nghe cả IBM lẫn Microsoft trình bày về cách xử lý ngôn ngữ trong CNTT, và họ rất giống nhau về các quan điểm cơ bản. Các nhà làm phần mềm khác dựa rất nhiều vào các nhà cung cấp CNTT này. Việc lựa chọn giải pháp hỗ trợ chữ Việt của họ rất đáng được chúng ta quan tâm. Chắc chắn sẽ rất bài bản và có nền móng. Thông tin của bạn Nguyễn Quang Huy (PC World B tháng 7/2002) về việc Microsoft hỗ trợ các ngôn ngữ thuộc họ Complex Script rất đáng để chúng ta lưu ý.

    Chúng ta biết rằng chuẩn công nghiệp (de facto) luôn có sức sống hơn hẳn chuẩn nghiên cứu, chuẩn khoa học, chuẩn pháp lý (de jure). Tại sao các cơ quan chức năng về mã hóa chữ Việt Unicode của Việt Nam không liên hệ với các nhà cung ứng CNTT như Microsoft, IBM... để cùng nghiên cứu, trao đổi? Thậm chí, phối hợp cùng họ đưa xử lý chữ Việt vào môi trường CNTT của họ? Tôi tin là mọi yêu cầu về chữ Việt họ giải quyết được, miễn là chúng ta chính thức làm việc với họ trên tinh thần hợp tác.

    Và tôi cũng tin là họ sẽ hợp tác vì hơn 80 triệu người Việt trên khắp thế giới là một cộng đồng đông đúc thứ 11 sau các cộng đồng tiếng Anh, tiếng Trung Quốc, tiếng Ả Rập, tiếng Tây Ban Nha, tiếng Bồ Đào Nha, tiếng Ấn Độ (Hindu), tiếng Indonesia, tiếng Pháp, tiếng Nga, và tiếng Nhật.

    Lời cuối
    Như người sử dụng, chúng tôi mong muốn có tính duy nhất (nếu được) cho mã hóa chữ Việt Unicode, và được hỗ trợ xử lý chữ Việt càng nhiều càng tốt. Còn mã tổ hợp hay dựng sẵn không quá quan trọng với chúng tôi.

    Thông thường, luật lệ do Quốc Hội (Nghị Viện) thông qua; riêng tại Thụy Sỹ, mỗi công dân đều có quyền tham gia làm luật. Tôi không được tham gia việc quyết định chọn mã, nhưng nếu thực hiện làm luật kiểu Thụy Sỹ, tôi, một người sử dụng xin được bỏ phiếu cho mã tổ hợp Unicode.

    Bùi Quang Ngọc

    ID: B0208_12