Tiêu Chu¦n Hóa Bµ Chæ Vi®t Nam


Chæ Vi®t Nam (qu¯c ngæ) càng ngày càng ðßþc sØ døng rµng rãi trong ngành ði®n toán và thông tin. Hi®n nay trên th¸ trß¶ng có bán nhi«u nhu li®u (software) Vi®t ngæ nhßng tiªc thay nhæng nhu li®u này dùng các bµ chæ (character set) khác nhau khiªn cho vi®c xØ lý (processing) và trao ð±i (interchange) dæ ki®n chæ Vi®t g£p nhi«u khó khån. Ði«u này làm cän tr· vi®c phát tri¬n nhu li®u Vi®t ngæ, änh hß·ng ðªn vi®c phát tri¬n kÛ ngh® ði®n toán Vi®t Nam. Do ðó, vi®c tiêu chu¦n hóa bµ chæ Vi®t Nam tr· nên kh¦n thiªt h½n bao gi¶ hªt. Trß¾c nhu c¥u này mµt s¯ các bÕn trë Vi®t Nam · Hoa KÏ ðã kªt hþp v¾i nhau ð¬ nghiên cÑu mµt bµ chæ Vi®t tiêu chu¦n. D¥n d¥n nhóm Nghiên-CÑu Tiêu-Chu¦n Tiªng Vi®t ðßþc thành hình vào mùa thu nåm 1989. Ðây là mµt t± chÑc vô vø lþi, thß¶ng ðßþc biªt dß¾i tên là Vietnamese Standardization Group (g÷i t¡t là Viet-Std Group), quy tø chuyên viên v« nhi«u lãnh vñc khác nhau. Các thành viên cüa nhóm hi®n s¯ng räi rác kh¡p n½i trên thª gi¾i và cµng tác v¾i nhau qua các mÕng lß¾i thông tin ði®n toán và các cuµc h÷p m£t b¤t thß¶ng. Møc tiêu hÕn h©p ban ð¥u cüa nhóm cûng ðßþc m· rµng ð¬ bao g°m luôn vi®c v§n ðµng và ðóng góp ý kiªn chuyên môn v« chæ Vi®t Nam cho các Vi®n иnh Chu¦n Tin H÷c và các công ty ði®n toán qu¯c tª.

Trong th¶i gian qua nhóm Viet-Std ðã ðÕt ðßþc ba thành công quan tr÷ng nh¤t là (1) thiªt kª bµ mã chæ Vi®t Nam 8-bit (Vietnamese 8-bit character code), (2) quy ð¸nh cách viªt chæ Vi®t b¢ng chæ 7-bit, và (3) v§n ðµng v¾i t± chÑc Unicode Consortium và Vi®n иnh Chu¦n Qu¯c Tª (International Standards Organization, g÷i t¡t là ISO) ð¬ toàn bµ chæ Vi®t ðßþc mã hóa (encode) theo phß½ng pháp chæ nguyên (precomposed character) trong bµ mã qu¯c tª 16-bit và 32-bit. Hai công trình ð¥u tiên ðã ðßþc trình bày chi tiªt trong mµt tài li®u song ngæ v×a ðßþc nhóm Viet-Std phát hành [1] mà chúng tôi xin gi¾i thi®u s½ lßþc ðªn bÕn ð÷c trong bài này.

Trß¾c hªt chúng tôi xin trình bày bµ chæ 8-bit, có tên Anh ngæ là Vietnamese Standard Code for Information Interchange hay g÷i t¡t là VISCII. Ða s¯ nhu li®u hi®n nay dña trên n«n täng m²i mçu tñ ðßþc mã hóa b¢ng 8-bit (1 byte). V¾i 8-bit chúng ta có th¬ mã hóa ðßþc 256 mçu tñ ho£c tín hi®u khác nhau. Vì nhæng lý do có tính cách l¸ch sØ, bµ chæ ASCII cüa Hoa kÏ dùng 128 mã s¯ (code point or code value) ð¥u tiên ðã tr· thành tiêu chu¦n qu¯c tª. Bµ chæ này bao g°m 32 tín hi®u ði«u khi¬n (control character) có mã s¯ t× 0 ðªn 31, và 96 mã s¯ còn lÕi dành cho mµt s¯ mçu tñ La tinh, d¤u ch¤m câu ho£c ký hi®u. (Ь ti®n vi®c trình bày, chúng tôi tÕm d¸ch control character là ki¬m-tñ, các chæ còn lÕi là ký-tñ. ÐÑng trên quan ði¬m ði®n toán, chúng ta phäi ð¸nh nghîa thêm mã-tñ là b¤t cÑ cái gì ðßþc tßþng trßng b¢ng mµt mã s¯; m²i mã-tñ tß½ng Ñng v¾i mµt mã s¯ và ngßþc lÕi.) Ph¥n còn lÕi (128 mã s¯ t× 128 ðªn 255) thß¶ng ðßþc quy ð¸nh và sØ døng tùy theo nhu c¥u cüa m²i qu¯c gia ho£c t×ng bµ nhu li®u. Nhß v§y chúng ta có th¬ tiêu chu¦n hóa 128 mã s¯ này cho các mçu tñ Vi®t Nam không n¢m trong danh sách chæ ASCII.

Bµ chæ qu¯c ngæ có t¤t cä 186 mçu tñ v×a thß¶ng v×a hoa, trong s¯ này chï có 52 mçu tñ ðßþc quy ð¸nh sÇn trong bµ chæ ASCII. Nhß v§y chúng ta c¥n phäi mã hóa thêm 134 chæ Vi®t trong khi chï còn có 128 ch² tr¯ng mà thôi. Chính vì khó khån này mà Vi®t Nam phäi ch§m tr­ trong vi®c ban hành mµt bµ chæ Vi®t tiêu chu¦n chính thÑc khiªn cho các công ty nhu li®u Vi®t ngæ ðành phäi tñ ð£t ra các bµ chæ riêng.

Hai phß½ng pháp mã hóa sau ðây thß¶ng ðßþc áp døng cho nhæng mçu tñ có d¤u phø (diacritical mark): phß½ng pháp d¤u r¶i (floating diacritics) và phß½ng pháp chæ nguyên. Phß½ng pháp chæ nguyên xem m²i mçu tñ, thí dø À, là mµt mçu tñ duy nh¤t trong khi phß½ng pháp d¤u r¶i xem chæ À nhß g°m có hai mã tñ "A" và mã-tñ "`". Nhß v§y phß½ng pháp d¤u r¶i dùng ít mã s¯ h½n phß½ng pháp chæ nguyên. Chúng ta chï c¥n 29 mã s¯ ð¬ mã hóa 24 nguyên âm chính (A Å Â E Ê I O Ô ´ U ¿ Y và 12 nguyên âm thß¶ng) và 5 d¤u thanh (s¡c, huy«n, höi, ngã, n£ng). Trong khi ðó phß½ng pháp chæ nguyên c¥n t¤t cä 144 mã s¯ ð¬ mã hóa t¤t cä nguyên âm Vi®t v×a thß¶ng v×a hoa.

Phß½ng pháp d¤u r¶i ðã ðßþc áp døng · nhi«u qu¯c gia dùng chæ La-tinh có d¤u phø. Nhßng quá trình thØ nghi®m cho th¤y phß½ng pháp này có khuyªt ði¬m l¾n lao v« nhi«u m£t nhß t¯c ðµ xØ lý giäm sút, nhu c¥u v« sÑc chÑa (storage) và bµ nh¾ (memory) gia tång, vi®c thäo chß½ng phÑc tÕp, không th¬ hµi nh§p (integrate) vào môi trß¶ng nhu li®u và cß½ng li®u hi®n hæu ... Vì nhæng lý do này, phß½ng pháp d¤u r¶i h¥u nhß không còn ðßþc sØ døng trong kÛ ngh® ði®n toán hi®n nay.

Ь có th¬ hµi nh§p vào n«n kÛ ngh® ði®n toán cüa thª gi¾i, chúng ta phäi ch¤p nh§n mã hóa theo phß½ng pháp chæ nguyên, nghîa là phäi sØ døng thêm 134 mã s¯ dù r¢ng chï có 128 mã s¯ còn tr¯ng mà thôi. Cách giäi quyªt thông thß¶ng là tìm cách thay thª 6 mã-tñ ASCII nào ðó b¢ng 6 mçu tñ Vi®t. Có r¤t nhi«u cách nhßng cách nào cûng v¤p phäi mµt s¯ khuyªt ði¬m riêng.

Sau khi phân tích kÛ càng v¤n ð« và cÑu xét cä chi«u hß¾ng phát tri¬n cß½ng li®u và nhu li®u trong tß½ng lai, nhóm Viet-Std ðã giäi quyªt bài toán này dña trên cån bän tri®t ð¬ bäo toàn 96 ký tñ ASCII trong vùng G0 (mang mã s¯ 32 ðªn 127) và nhæng ki¬m tñ dùng trong khi¬n h® (operating system). Quyªt ð¸nh này ðßþc trình bày kÛ càng trong tài li®u [1], nhßng trong phÕm vi bài này có th¬ ðßþc tóm t¡t nhß sau: b¢ng cách bäo toàn nhæng ký tñ ASCII v×a k¬ chúng ta có th¬ sØ døng h¥u hªt nhu li®u và cß½ng li®u sän xu¤t kh¡p n½i trên thª gi¾i mà không phäi ð¥u tß nhân lñc và tài nguyên vào vi®c ði«u chïnh ho£c biªn ð±i cho thích hþp v¾i chæ Vi®t Nam, cø th¬ nhß bµ d¸ch (compiler), khi¬n h®, khung X (X windows), v.v... Chï có cách giäi quyªt này m¾i giúp chúng ta sØ døng ðßþc nhæng thành quä kÛ thu§t m¾i më nh¤t trên thª gi¾i.

V¾i phß½ng châm trên, chúng tôi ðã thay thª 6 ki¬m-tñ ASCII mang mã s¯ 2, 5, 6, 20, 25, 30 b¢ng 6 mçu tñ hoa , , , ,  và . Ngoài ra, dña trên bµ tñ-mã tiêu chu¦n 8859/Latin-1 dành cho các nß¾c Tây Âu, chúng tôi cûng quyªt ð¸nh duy trì mã s¯ cüa t¤t cä chæ Vi®t ðã có sÇn trong tiêu chu¦n này. Trong vùng mã s¯ t× 128 ðªn 255, t¤t cä nhæng v¸ trí nào có th¬ xäy ra xung ðµt v¾i các nhu li®u ph± thông hi®n hæu nhß MS-Windows 3.1 ð«u ðßþc b¯ trí b¢ng chæ hoa. Bäng mã VISCII ðßþc li®t kê trong tài li®u [1].

Sau ðây chúng tôi xin s½ lßþc v« quy t¡c viªt chæ Vi®t Nam b¢ng chæ 7-bit ASCII. Quy t¡c này có tên Anh ngæ là Vietnamese Quoted Readable Specifications (Quy-ð¸nh Ð÷c-Ðßþc-Trong-Ngo£c, g÷i t¡t là VIQR) ðã ðßþc cµng ð°ng ngß¶i Vi®t · häi ngoÕi sØ døng rµng rãi ð¬ trao ð±i ði®n thß b¢ng tiªng Vi®t trên các máy ði®n toán không có chæ Vi®t Nam. Theo quy ð¸nh này, các d¤u ðßþc ðánh sau các nguyên âm; d¤u s¡c, huy«n, höi, ngã, n£ng ðßþc thay thª b¢ng các ký hi®u ASCII Hoa-KÏ có dÕng gþi hình tß½ng tñ là "'", "`", "?", "~", ".", d¤u trång (d¤u á) ðßþc thay b¢ng "(", d¤u mû b¢ng "^", d¤u móc (nhß trong chæ ´, ¿) b¢ng "+", và chæ ð ðßþc thay thª b¢ng "dd". ChÆng hÕn, hai câu th½ Ki«u cüa cø Nguy­n Du:

s¨ hi®n ra nhß sau khi viªt theo quy ð¸nh VIQR: Tuy nhiên mµt s¯ ngß¶i lÕi thích dùng các ký hi®u khác, chÆng hÕn nhß "*" tßþng trßng cho d¤u móc, "<" thay cho d¤u trång, "\" thay cho d¤u huy«n, "-d" tßþng trßng cho "ð", v.v... Nhßng v¾i vai trò là mµt tiêu chu¦n, VIQR phäi ¤n ð¸nh mµt quy lu§t duy nh¤t và t¯i thi¬u ð¬ làm c½ s· th¯ng nh¤t cho vi®c trao ð±i nhu li®u, nghîa là m²i d¤u Vi®t Nam phäi ðßþc tßþng trßng b¢ng mµt và chï mµt ký tñ ASCII mà thôi. V¾i sñ sØ døng rµng rãi bàn ðánh chæ ASCII trong gi¾i ði®n toán Vi®t Nam, chúng tôi quyªt ð¸nh ch÷n quy ð¸nh VIQR dña trên nguyên t¡c thñc døng là d­ ð÷c và d­ nh¾ cho tuy®t ðÕi ða s¯ ngß¶i dùng. Quy lu§t VIQR ðßþc mô tä chi tiªt trong chß½ng 4 cüa tài li®u Anh Ngæ và Vi®t ngæ [1]. Cä hai tiêu chu¦n VISCII và VIQR ðã ðßþc nhóm vô vø lþi TriChlor Software tr¡c nghi®m thành công trong các môi trß¶ng Unix, X-Windows, DOS, MS-Windows 3.1. V¾i bµ chæ VISCII, ngß¶i dùng có th¬ dùng chæ Vi®t v¾i h¥u hªt các nhu li®u viªt cho môi trß¶ng 8-bit, t× programming, computing, ðªn word processing mà không c¥n phäi mua mµt nhu li®u ð£c bi®t nào. Nhóm TriChlor và thân hæu ðã thiªt kª ho£c biªn ð±i r¤t nhi«u nhu li®u công cµng ð¬ v§n hành v¾i VISCII: editors, keyboard drivers, xterms, software development tools, fonts, applications, ... T¤t cä nhu li®u này ð«u ðßþc ph± biªn mi­n phí cho công chúng. Chúng tôi xin k¬ s½ lßþc mµt s¯ sän ph¦m sau ðây: