TiÕng
ViÖt vµ bé m· Unicode
§Æng Minh TuÊn (dangtuan@bigfoot.com)
89B Lý Nam §Õ, Hµ néi, 8433872
(B¸o TH&§S)
1 Tæng quan vÒ bé m·
Unicode
TiÕng ViÖt cã tÊt c¶ 134 ký tù ®Æc
thï ViÖt, do ®ã 128 gi¸ trÞ cña phÇn më réng kh«ng ®ñ
®Ó m· tÊt c¶ c¸c con ch÷ ViÖt. V× vËy ®· xuÊt hiÖn
nhiÒu gi¶i ph¸p kh¸c nhau nh»m m· hãa tiÕng ViÖt trong
khu«n khæ b¶ng m· 8-Bit. Cã thÓ chØ sö dông ch÷ thêng
trong b¶n m·, tøc lµ chØ cÇn 67 gi¸ trÞ, cßn ch÷ hoa
®îc thÓ hiÖn b»ng c¸ch dïng Font ch÷ hoa. gi¶i ph¸p nµy
®îc dïng trong TCVN 5712-1993 (VN3) mµ Font ch÷ ABC lµ 1 vÝ
dô. Gi¶i ph¸p tæ hîp lµ dïng 2 ký tù: ký tù nguyªn ©m
vµ ký tù dÊu ghÐp lång vµo nhau. VÝ dô ch÷ ‘¸’
®îc t¹o thµnh bëi ký tù ‘a’ vµ ký tù dÊu s¾c (‘)
mµ font ch÷ VNI lµ vÝ dô tiªu biÓu. C¶ 2 gi¶i ph¸p nµy
vÒ tiÕng ViÖt ®Òu cã nh÷ng u ®iÓm vµ nhîc ®iÓm
kh¸c nhau, (xem thªm phÇn ph©n tÝch c¸c u nhîc ®iÓm
nµy trong Vietkey Help).
B¶ng m· 8-bit víi 256 gi¸ trÞ kh«ng
thÓ ®ñ chç ®Ó m· c¸c ký tù cña c¸c ng«n ng÷ dïng ch÷
tîng h×nh nh tiÕng H¸n, TiÕng NhËt, Hµn quèc... Tõ
tríc ®Õn nay ®· cã nhiÒu gi¶i ph¸p kh¸c nhau ®Ó m·
ho¸ c¸c ký tù cña c¸c ng«n ng÷ nµy trªn m¸y vi tÝnh, tuy
nhiªn nh÷ng gi¶i ph¸p nµy thêng dïng kü thuËt tæ hîp
hoÆc c¸c chuçi ký tù ®iÒu khiÓn (Esc) kh¸ phøc t¹p vµ
quan träng h¬n c¶ lµ c¸c gi¶i ph¸p nµy kh«ng t¬ng thÝch
víi nhau. Do ®ã viÖc sö dông ®ång thêi c¸c ng«n ng÷
trong cïng 1 v¨n b¶n vµ trong cïng 1 font ch÷ thêng kh«ng
thÓ hoÆc rÊt khã kh¨n khi thùc hiÖn.
Unicode ra ®êi lµ nh»m kh¾c phôc c¸c nhîc ®iÓm nãi
trªn vµ nh»m x©y dùng mét bé m· chuÈn v¹n n¨ng dïng
chung cho tÊt c¶ mäi ng«n ng÷ trªn thÕ giíi.
Unicode c«ngxoocxiom ®îc thµnh lËp
vµo n¨m 1991 nh 1 tæ chøc phi lîi nhuËn nh»m ph¸t triÓn
chuÈn Unicode, c¸c thµnh viªn cña Unicode c«ng xoãc xi«ng
bao gåm c¸c c«ng ty hµng ®Çu cña thÕ giíi trong lÜnh vùc
phÇn mÒm nh Adobe, Aldus, Borland, Digital, GO, IBM, HP, Lotus,
Metaphor, Microsoft, NeXT, Novell, Sun, Symantec, Taligent, Unisys,
and WordPerfect ...
Unicode lµ bé m· ký tù 16-Bit, t¬ng
thÝch hoµn toµn víi chuÈn quèc tÕ ISO/IEC 10646-1; 1993. Víi
65.536 ký tù Unicode hÇu nh cã thÓ m· ho¸ tÊt c¶ c¸c
ng«n ng÷ trªn thÕ giíi. Ngoµi ra víi c¬ chÕ më réng
UTF-16 Unicode vµ chuÈn ISO 10646 cßn cho phÐp m· ho¸ h¬n 1
triÖu ký tù mµ kh«ng cÇn ph¶i dïng ®Õn m· ®iÒu khiÓn
Escape.
Phiªn b¶n míi nhÊt hiÖn nay lµ Unicode
2.0 (B¶n 3.0 ®ang chuÈn bÞ ph¸t hµnh) bao gåm c¸c ng«n ng÷
thuéc hä la-tinh, vµ Greek, Cyrillic, Armenian, Hebrew, Arabic,
Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu,
Kannada, Malayalam, Thai, Lao, Georgian, Tibetan, Japanese Kana, the
complete set of modern Korean Hangul, and a unified set of
Chinese/Japanese/Korean (CJK).
ChuÈn Unicode m« t¶ c¸c ký tù ng«n
ng÷, c¸c dÊu chÊm c©u, dÊu phô, ký hiÖu to¸n häc, c¸c
dÊu mòi tªn vµ c¸c ký hiÖu Dingbats. HiÖn nay Unicode ®·
®Þnh nghÜa kho¶ng 39 000 ký tù. Cßn kho¶ng 18.000 ký tù
sÏ ®îc ®Þnh nghÜa nay mai, 917 504 ký tù cã thÓ ®îc
®Þnh nghÜa nÕu dïng c¬ chÕ më réng UTF-16. 6.400 chç
®îc dµnh ra cho c¸c h·ng sö dông víi c¸c môc ®Ých
riªng cña m×nh. UTF-16 còng dµnh ra 131.072 ký tù ®Ó dµnh
cho nh÷ng môc ®Ých dïng riªng.
C¸c chuÈn m· ho¸ ký tù kh«ng chØ
®Þnh nghÜa c¸c m· cña c¸c ký tù, gi¸ trÞ sè, vµ vÞ
trÝ cña c¸c ký tù mµ cßn ®Þnh nghÜa c¶ c¸ch biÓu diÔn
c¸c m· ký tù díi d¹ng bit. Unicode vµ ISO-10646 quy ®Þnh
2 c¬ chÕ, khu«n d¹ng chuyÓn ®æi lµ UTF-8 vµ UTF-16.
Mét sè ®Æc ®iÓm cña Unicode:
- Mçi ký tù trong b¶ng m· Unicode ®Òu
cã ®é dµi cè ®Þnh lµ 16 Bit, nhê ®ã ViÖc xö lý c¸c
x©u ký tù Unicode rÊt ®¬n gi¶n kh«ng phøc t¹p nh c¸c
gi¶i ph¸p dïng chuçi ký tù ®iÒu khiÓn, ph¶i cã nh÷ng
thuËt to¸n t¬ng ®èi phøc t¹p ®Ó nhËn diÖn ký tù trong
1 chuçi c¸c Byte. Trong khi ®ã víi Unicode mçi ký tù cã
®é dµi ®óng 2 Byte nªn cã thÓ ®Þnh vÞ rÊt dÔ dµng c¸c
vÞ trÝ cña ký tù trong chuçi Byte cho tríc.
- Unicode tr¸nh ®Õn møc tèi ®a viÖc
®Þnh nghÜa d thõa, trïng lÆp. VÝ dô ký tù ‘Ð’ chØ
cã 1 m· duy nhÊt dïng chung cho c¶ ng«n ng÷ tiÕng ViÖt,
tiÕng Czech, ....còng chÝnh v× thÕ nªn hÖ thèng ch÷ ViÖt
cã c¸c m· n»m r¶i r¸c ë nhiÒu vÝ trÝ kh«ng liÒn nhau.
TiÕng H¸n, NhËt vµ Hµn cã kho¶ng 10 ngh×n ký tù trïng
nhau nªn chóng ®îc dïng chung cho c¶ 3, tuy nhiªn trong
Unicode vÉn cã c¸c vïng riªng ®Ó ®Þnh nghÜa nh÷ng ký tù
®Æc thï cña 3 ng«n ng÷ nµy.
- Unicode vÒ c¬ b¶n kh«ng quy ®Þnh
viÖc bè trÝ c¸c ký tù theo quy ®Þnh s¾p xÕp cña c¸c
ng«n ng÷, ®iÒu nµy còng lµ hÖ qu¶ cña viÖc tr¸nh ®Þnh
nghÜa c¸c ký tù d thõa do ph¶i tËn dïng c¸c ký tù dïng
chung nªn kh«ng thÓ bè trÝ c¸c ký tù theo tõng vïng riªng
cho tõng ng«n ng÷. H¬n n÷a thùc tÕ víi nhiÒu ng«n ng÷
ngêi ta ph¶i dïng nh÷ng thuËt to¸n riªng ®Ó s¾p xÕp
chø kh«ng thÓ s¾p xÕp theo thø tù cña chóng trong b¶ng
ch÷ c¸i (tiÕng ViÖt lµ 1 ®iÓn h×nh). ChÝnh v× vËy b¶ng
m· tiÕng ViÖt trong Unicode cã c¸c ký tù ViÖt n»m r¶i r¸c
ë nhiÒu n¬i vµ kh«ng theo 1 tr×nh tù s¾p xÕp nµo.
Unicode ®· ®îc cµi ®Æt trong c¸c
hÖ ®iÒu hµnh Windows NT, Windows 9.x, MacIntosh (MacOS 8), BE
OS, Linux...
Windows NT sö dông Unicode nh lµ nÒn
t¶ng trong hÖ ®iÒu hµnh, c¸c x©u ký tù ®îc xö lý nh
lµ x©u Unicode, Resource, tªn File trong NTFS còng lµ Unicode.
Tuy nhiªn ®Ó t¨ng tÝnh t¬ng thÝch Windows NT vÉn cã c¸c
hµm API ®Ó xö lý ký tù m· 8-Bit. Windows NT 5.0 hç trî
h¬n 100 ng«n ng÷ kh¸c nhau trong ®ã cã c¶ tiÕng ViÖt.
Ngîc l¹i Windows 9.x kh«ng lÊy Unicode
lµm nÒn t¶ng néi t¹i trong hÖ ®iÒu hµnh, tuy nhiªn Win9.x
l¹i cã 1 sè hµm hç trî cho viÖc xö lý vµ hiÓn thÞ m·
Unicode.
Muèn sö dông ®îc Unicode cÇn ph¶i
cã nh÷ng phÇn mÒm hç trî hiÓn thÞ hoÆc cho phÐp gâ ký
tù theo chuÈn Unicode, ngoµi ra còng cÇn ph¶i cã Font ch÷
Unicode ®îc cµi ®Æt trong hÖ thèng.
HiÖn nay trong m«i trêng Windows, bé
MS Office 2000 (Word, Excel, Powerpoint...) hç trî rÊt tèt bé
m· Unicode. Trong m«i trêng M¹ng Internet Expolore 5.0 còng
cho phÐp hiÓn thÞ c¸c trang Web ®îc thiÕt kÕ theo chuÈn
Unicode.
2. TiÕng ViÖt trong bé
m· Unicode
TiÕng ViÖt ®îc xÕp vµo hä La-tinh
më réng 1 (Latinh Extended 1), tuy r»ng c¸c ký tù ViÖt ph©n
bè kh«ng tËp trung, nhng cã 1 thuËn lîi rÊt lín lµ do
tiÕng ViÖt ®îc xÕp vµo hä La-tinh nªn ®©y lµ thµnh
phÇn c¬ b¶n cña hÇu hÕt tÊt c¶ c¸c font ch÷ Unicode, cã
nghÜa lµ tiÕng ViÖt cã mÆt ë mäi n¬i trong bÊt kú cña
ng«n ng÷ nµo, vµ nh thÕ cã thÓ ®äc ®îc tiÕng ViÖt
ë mäi n¬i cã cµi ®Æt font Unicode. Trong khi ®ã c¸c ng«n
ng÷ kh«ng thuéc hä la-tinh nh China, Japan, Lao, Thai...th×
kh«ng ph¶i lóc nµo còng cã s½n trong c¸c font Unicode.
TiÕng ViÖt trong Unicode cã thÓ cã 2
d¹ng: ký tù dùng s½n vµ ký tù tæ hîp. Unicode cã ®ñ 134
ký tù cho tÊt c¶ ch÷ hoa vµ ch÷ thêng trong b¶ng ch÷
c¸i tiÕng ViÖt, ®ång thêi cã m· cho 5 dÊu thanh (HuyÒn,
s¾c, hái, ng·, nÆng) ®Ó t¹o ra c¸c ký tù ViÖt d¹ng tæ
hîp, ngoµi ra Unicode cßn cã dÊu riªng ®Ó biÓu diÔn ®¬n
vÞ tiÒn ®ång ViÖt nam.
VÝ dô:
Ch÷ c ¶ n g sÏ ®îc biÓu diÔn díi
d¹ng Unicode nh sau (Chuçi sè Hex):
0063 1EA3 006E 0067 (m· dùng
s½n)
0063 0041 0309 006E 0067 (m· tæ hîp)
Bµn phÝm cho phÐp gâ tiÕng ViÖt trªn
Windows 2000 sÏ sinh ký tù theo kiÓu dùng s½n, trong khi phÇn
mç trî tiÕng ViÖt Unicode trong Windows 9.x l¹i sinh ký tù
theo m· ræ hîp ( c¸c ch÷ tæ hîp nµy thêng cã ®é mü
thuËt kh«ng cao do dÊu thanh bá cè ®Þnh vµ dïng chung nªn
ch÷ vµ dÊu ®Æt kh«ng hîp lý ®èi víi c¸c ch÷ thêng).
3. Cµi ®Æt tiÕng
ViÖt Unicode
3.1 HiÓn thÞ tiÕng ViÖt Unicode:
§Ó hiÓn thÞ tiÕng ViÖt Unicode cÇn
ph¶i cµi ®Æt font ch÷ Unicode, chØ cÇn cµi 1 trong c¸c
phÇn mÒm sau: Internet Explore 5 hoÆc MS Office 2000 trong
Windows 95/98 hoÆc cµi ®Æt Windows 2000. Khi cµi ®Æt 1 trong
nh÷ng phÇn mÒm trªn c¸c font Unicode cã tiÕng ViÖt sÏ
®îc tù ®éng cµi ®Æt hÖ thèng. C¸c font c¬ b¶n cña
Microsoft ®i kÌm víi c¸c phÇn mÒm trªn ®· hç trî tiÕng
ViÖt Unicode lµ Times New Roman, Arial, Courier, Tahoma, Ngoµi ra
cã thÓ t¶i xuèng c¸c font Unicode (cã hç trî tiÕng ViÖt)
kh¸c trªn Internet: Verdana, Arial Narrow, Arial Black, Bookman
Old Style, Garamond, Impact, Lucida Sans. Comic Sans...
3.2 Gâ tiÕng ViÖt Unicode
o Víi Windows 2000 (B¶n English)
chØ cÇn cµi ®Æt thªm ng«n ng÷ tiÕng ViÖt bµn phÝm tiÕng
ViÖt theo chuÈn TCVN sÏ ®îc cµi ®Æt vµ cho phÐp b¹n gâ
tiÕng ViÖt (Mét kiÓu gâ gÇn gièng víi kiÓu gâ VNI).
o Windows 95, 98 (B¶n English):
t¶i xuèng Vietnamese Support trong Website cña Microsoft, cµi
®Æt Vi.inf ®Ó cã ®îc bé gâ tiÕng ViÖt Unicode theo
tiªu chuÈn bµn phÝm TCVN. Trong c¶ 2 m«i trêng Windows NT
vµ Windows 9.x Microsoft cã hç trî c¶ Local cho tiÕng ViÖt do
®ã c¸c tÝnh n¨ng t×m kiÕm, s¾p xÕp tiÕng ViÖt còng
®îc hç trî, ngoµi ra Local tiÕng ViÖt còng hç trî c¶
c¸ch ®¸nh ch÷ sè hay c¸ch ®Æt ngµy th¸ng theo quy ®Þnh
cña ViÖt nam.
o Bµn phÝm tiÕng ViÖt do
Microsoft hç trî chØ cã 1 kiÓu duy nhÊt lµ TCVN, sÏ g©y
khã kh¨n cho nh÷ng ngêi quen víi kiÓu gâ Telex hoÆc VNI.
§Ó cã kiÓu gâ quen thuéc trong c¶ 2 m«i trêng Windows NT,
Windows 9.x b¹n cã thÓ dïng bé gâ VIETKEY (chän code lµ VN
Win 95).¦u ®iÓm cña bé gâ Vietkey trong m«i trêng
Unicode: hç trî kiÓu gâ Telex vµ VNI, cã thªm nhiÒu tÝnh
n¨ng n©ng cao víi font Unicode nh kiÓm tra lçi chÝnh t¶,
tù ®éng chuyÓn ®æi Anh-ViÖt, gâ t¾t trong tÊt c¶ c¸c
øng dông, 1 phÇn mÒm duy nhÊt ch¹y ®îc trªn c¶ 2 m«i
trêng WinNT vµ Win95. Ch¬ng tr×nh nhá gän (chØ cÇn 90K),
kh«ng bÞ conflict víi c¸c phÇn mÒm phæ th«ng L¹c ViÖt MTD,
English Stady...®ång thêi Vietkey vÉn cho phÐp gâ tiÕng ViÖt
víi c¸c font truyÒn thèng ABC, VNI, Vietware...
TiÕng ViÖt trong Unicode: tæng céng 140
m· ®îc ®Þnh nghÜa cho tiÕng ViÖt: 134 ký tù ch÷ viÖt,
5 dÊu thanh vµ dÊu VN§. Trong ®ã cã 31 ký tù thuéc b¶ng
m· 8-bit ASCII më réng.
4. KÕt luËn
MÆc dï bé m· chuÈn quèc gia TCVN
5712-1999 sÏ ®îc c«ng bè trong 1 thêi gian gÇn ®©y,
nhng víi b¶n chÊt vÉn lµ bé m· 8-Bit vµ trªn nÒn bé m·
TCVN 5712-1993, bé m· nµy vÉn sÏ gÆp ph¶i nh÷ng tranh chÊp
víi nhiÒu øng dông phæ th«ng th«ng nh MS Office, ®Æc
biÖt lµ víi Internet Explore 5 vµ MS Publishing 2000, ch÷ ‘’
sÏ kh«ng hiÓn thÞ ®îc trªn c¸c trang Web hoÆc sÏ bÞ
ng¾t dßng sai, bé m· Unicode sÏ gi¶i quyÕt ®îc nh÷ng
tranh chÊp nãi trªn vµ cho phÐp tiÕng ViÖt hoµ ®ång víi
c¸c ng«n ng÷ kh¸c trªn thÕ giíi.
Trong xu thÕ hoµ nhËp víi thÕ giíi
hiÖn nay, bé m· Unicode vµ 1 sè phÇn mÒm, c«ng cô hç trî
hiÓn thÞ vµ gâ tiÕng ViÖt Unicode trong c¸c m«i trêng
phæ th«ng nh Windows NT vµ Windows 9.x céng víi IE5, Office
2000, Vietkey...Unicode sÏ më ra 1 cuéc c¸ch m¹ng míi trong
lÜnh vùc tiÕng ViÖt vµ trong t¬ng lai kh«ng xa Unicode sÏ
lµ bé m· ®îc dïng rÊt phæ biÕn trong thÞ thêng tin
häc cña ViÖt nam.
Ghi chó: Liªn l¹c víi t¸c gi¶ ®Ó cã
Vietkey hç trî Unicode ch¬ng tr×nh söa lçi ch÷ ‘’ cho
Internet Explore 5, Outlook 5 vµ b¶ng m· ®Çy ®ñ cña tiÕng
ViÖt Unicode.
Ch¬ng
tr×nh Vietnamese Support: B»ng c¸ch cµi ®Æt Vietnamese
support vµ dïng Vietkey c¸c b¹n cã thÓ gâ tiÕng ViÖt
Unicode trong Office 2000 trªn Win9x.
Ghi chó:
1- §Ó gâ tiÕng ViÖt Unicode trong Win9x b¹n cÇn ph¶i cµi
Office 2000
2- NÕu dïng Windows 2000 th× kh«ng cÇn ph¶i cµi Vietnamese
support.
3- Trªn thanh taskbar phÇn hiÓn thÞ tiÕng ViÖt thay vi` ch÷
ViÖt Nam cã thÓ chØ lµ 2 dÊ'u ?? , ®©y lµ lçi cña Win9x
tuy nhiªn nã kh«ng lµm ¶nh hëng ®Õn viÖc gâ tiÕng
ViÖt. |