Tải bản đầy đủ (.doc) (5 trang)

Chuyển bảng mã TV Unicode

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (87.2 KB, 5 trang )

* TÊN SKKN :
CHUYỂN MÃ DỮ LIỆU
SANG BẢNG MÃ TIẾNG VIỆT UNICODE
Tác giả : NGUYỄN NGỌC ÂN
Đơn vò : Phòng Tổ chức-CB Sở GD-ĐT An Giang
I.- ĐẶT VẤN ĐỀ :
Theo quy đònh của Chính phủ, từ ngày 01/01/2003, tất cả các thông tin tiếng Việt trao đổi trên
mạng thông tin đều phải sử dụng bảng mã Tiếng Việt Unicode.
Hiện nay trên thò trường đã xuất hiện nhiều công cụ chuyển mã đáp ứng được yêu cầu chuyển
văn bản (Text) và siêu văn bản (Hyper Text) từ các bảng mã Tiếng Việt thông dụng như VNI, ABC, ...
sang Unicode hiệu quả khá tốt. Ngoài ra, trong bộ gõ Vietkey 2000 cũng đã cung cấp kiểu gõ cho
bảng mã Tiếng Việt Unicode. Tuy nhiên về CSDL thì việc chuyển mã sẽ chạm đến những vấn đề
phức tạp hơn. Chúng tôi đã giải quyết yêu cầu này bằng một cách đơn giản và ít tốn kém là sử dụng
một hàm chuyển mã. Chỉ cần bổ sung hàm này vào chương trình quản lý CSDL (môi trường Foxpro),
khi đó các lệnh xuất ra file văn bản phải được "lọc" qua hàm này để văn bản xuất ra theo mã Unicode.
Với cách giải quyết như vậy, ta không cần phải chuyển mã CSDL và viết lại chương trình phần mềm.
II.- CHƯƠNG TRÌNH NGUỒN CỦA HÀM CHUYỂN MÃ :
Chúng tôi đặt tên hàm là BKTOUNI, lưu trong file tên BKTOUNI.PRG. Nội dung file này như
sau : (nếu soạn trên Windword, bạn chọn font .VnTime, rồi Save với dạng Text Only).
FUNC BKTOUNI
PARA CHUOI
PRIVATE ALL
SET TALK OFF
CHUOI1=ALLTRIM(CHUOI)
CHUOI2=""
DAI=LEN(CHUOI1)
FOR I=1 to DAI
BK=SUBS(CHUOI1,I,1)
DO CASE
CASE BK="¸"
UNI="á"


CASE BK="µ"
UNI="à"
CASE BK="¶"
UNI="ả"
CASE BK="·"
UNI="ã"
CASE BK="¹"
UNI="ạ"
CASE BK="¨"
UNI="ă"
CASE BK="Ê"
UNI="ấ"
CASE BK="Ç"
UNI="ầ"
CASE BK="È"
UNI="ẩ"
CASE BK="É"
UNI="ẫ"
CASE BK="Ë"
UNI="ậ"
CASE BK="©"
UNI="â"
CASE BK="¾"
UNI="ắ"
CASE BK="»"
UNI="ằ"
CASE BK="¼"
UNI="ẳ"
CASE BK="½"
UNI="ẵ"

CASE BK="Ỉ"
UNI="ặ"
CASE BK="Ð"
UNI="é"
CASE BK="Ì"
UNI="è"
CASE BK="Ỵ"
UNI="ẻ"
CASE BK="Ï"
UNI="ẽ"
CASE BK="ẹ"
UNI="ẹ"
CASE BK="ê"
UNI="ê"
CASE BK="ế"
UNI="ế"
CASE BK="ề"
UNI="ề"
CASE BK="ể"
UNI="ể"
CASE BK="ễ"
UNI="ễ"
CASE BK="ệ"
UNI="ệ"
CASE BK="í"
UNI="í"
CASE BK="ì"
UNI="ì"
CASE BK="ỉ"
UNI="ỉ"

CASE BK="ĩ"
UNI="ĩ"
CASE BK="ị"
UNI="ị"
CASE BK="ó"
UNI="ó"
CASE BK="ò"
UNI="ò"
CASE BK="ỏ"
UNI="ỏ"
CASE BK="õ"
UNI="õ"
CASE BK="ọ"
UNI="ọ"
CASE BK="ô"
UNI="ô"
CASE BK="ố"
UNI="ố"
CASE BK="ồ"
UNI="ồ"
CASE BK="ổ"
UNI="ổ"
CASE BK="ỗ"
UNI="ỗ"
CASE BK="ộ"
UNI="ộ"
CASE BK="ơ"
UNI="ơ"
CASE BK="ớ"
UNI="ớ"

CASE BK="ờ"
UNI="ờ"
CASE BK="ở"
UNI="ở"
CASE BK="ỡ"
UNI="ỡ"
CASE BK="ợ"
UNI="ợ"
CASE BK="ú"
UNI="ú"
CASE BK="ù"
UNI="ù"
CASE BK="ủ"
UNI="ủ"
CASE BK="ũ"
UNI="ű"
CASE BK="ụ"
UNI="ụ"
CASE BK=""
UNI="ư"
CASE BK="ứ"
UNI="ứ"
CASE BK="ừ"
UNI="ừ"
CASE BK="ử"
UNI="ử"
CASE BK="ữ"
UNI="ữ"
CASE BK="ự"
UNI="ự"

CASE BK="ý"
UNI="ý"
CASE BK="ỳ"
UNI="ỳ"
CASE BK="ỷ"
UNI="ỷ"
CASE BK="ỹ"
UNI="ỹ"
CASE BK="ỵ"
UNI="ỵ"
CASE BK="đ"
UNI="đ"
CASE BK="Đ"
UNI="Đ"
CASE BK="Â"
UNI="Â"
CASE BK="Ô"
UNI="Ô"
CASE BK="Ơ"
UNI="Ơ"
CASE BK="Ê"
UNI="Ê"
CASE BK="Ư"
UNI="Ư"
OTHER
UNI=BK
ENDCASE
CHUOI2=CHUOI2+UNI
ENDFOR
RETURN CHUOI2

III.- CÁCH SỬ DỤNG HÀM :
Môi trường Foxpro hiện nay chưa hiểu được Unicode, nên các văn bản hiển thò trực tiếp trên
môi trường này không ra dấu Tiếng Việt. Bạn chỉ có thể xuất ra file văn bản, sau đó mở file bằng một
chương trình xử lý văn bản mạnh (Winword 97 trở lên) hoặc một Browse hiểu Unicode (Ví dụ : IE
phiên bản 5.0 trở lên).
Mặt khác, các mã trên là dạng Text thuần tuý, nên WINWORD không thể hiển thò trực tiếp
theo bảng mã Unicode được, mà bạn phải lưu dưới dạng 1 file siêu văn bản (với phần đuôi là .HTM),
đầu văn bản có thẻ mở <HTML> và thẻ khai báo font, ví dụ : <FONT FACE=Arial> ; cuối văn bản có
thẻ đóng </HTML>. Ngoài ra, ở cuối mỗi đoạn văn bản, bạn nên chèn thêm thẻ ngắt dòng <BR> thì
văn bản mới hiện ra hoàn chỉnh.
Ví dụ 1 : Chương trình sau đây lấy dữ liệu từ file NHANSU.DBF xuất ta file siêu văn bản
DANHSACH.HTM
Sau khi chạy chương trình, sẽ tạo ra file DANHSACH.HTM có dạng như sau :
<HTML><FONT FACE=Arial>
Mai Anh D&#369;ng, 18/10/1960, THPT Nguy&#7877;n B&#7881;nh Khi&#234;m<BR>
Nguy&#7877;n Ng&#7885;c D&#369;ng, 11/12/1958, THPT Ch&#226;u V&#259;n Li&#234;m<BR>
Nguy&#7877;n Thanh D&#369;ng, 18/10/1969, THPT Nguy&#7877;n Ch&#237; Thanh<BR>
Tr&#7847;n Ho&#224;ng D&#369;ng, 28/12/1955, S&#7903; GD-&#272;T An Giang<BR></HTML>
Bạn mở file này trong IE sẽ thấy hiện ra như sau : (nhấp đúp vào tên file để mở)
Mai Anh Dòng, 18/10/1960, THPT Ngun BØnh Khiªm
Ngun Ngäc Dòng, 11/12/1958, THPT Ch©u V¨n Liªm
Ngun Thanh Dòng, 18/10/1969, THPT Ngun ChÝ Thanh
TrÇn Hoµng Dòng, 24/12/1955, Së GD-§T An Giang
Ví dụ 2 : chuyển 1 file văn bản.
Hàm BKTOUNI nêu trên cũng có thể vận dụng để chuyển 1 file văn bản sang mã Unicode. Ta
SET TALK OFF
SET SAFETY OFF
USE NHANSU.dbf
INDEX ON TEN+HODEM TO T.IDX
SET PRIN ON

SET PRIN TO FILE DANHSACH.HTM
?"<HTML><FONT FACE=Arial>"
LOCA FOR TEN="Dũng" && (Lọc danh sách những người có tên là Dũng.)
DO WHILE.NOT.EOF() && (Dò tìm toàn bộ file CSDL NHANSU.DBF)
?BKTOUNI(HODEM+TEN+","+NGAYSINH+","+DONVI+"<BR>") && (HODEM,TEN,
NGAYSINH,DONVI là các fileds kiểu Character trong CSDL)
CONT
ENDDO
?"</HTML>"
SET PRIN TO
SET PRIN OFF
RETURN
chỉ cần copy nội dung văn bản dán vào 1 field kiểu Memo trong 1 tệp DBF, sau đó xuất field này ra 1
file HTML. Chúng tôi đã làm như sau :
- Tạo 1 file CHUYENMA.DBF, với 1 Field duy nhất là NOIDUNG, kiểu memo. Chỉ cần duy
nhất 1 Record.
- Tạo file chương trình CHUYENMA.PRG, với nội dung như sau :
- Mở file văn bản mã tiếng Việt TCVN3 (Bộ font ABC) trong WORDPAD, chèn các thẻ ngắt
dòng <BR> vào cuối mỗi đoạn văn bản. Lưu lại dạng TEXT Only. Copy toàn bộ nội dung văn bản
trong file này vào Clipboard (Nhấn tổ hợp phím Ctrl+A, nhấn tiếp Ctrl+C).
(Lưu ý : Chỉ mở file trong WORDPAD, không mở file trong WINWORD, vì nếu vậy, khi copy
văn bản mã TCVN3 để dán vào trường Memo sẽ bò mất một số ký tự).
Ví dụ : Chúng tôi đã bổ sung thẻ ngắt dòng <BR> và Copy đoạn văn bản mã TCVN3 sau đây
vào Clipboard :
- Khởi động VFP, Open bảng CHUYENMA.DBF, mở field memo NOIDUNG, dán nội dung
văn bản vừa copy vào. Đóng file.
- Chạy chương trình CHUYENMA.PRG
Chương trình sẽ tạo ra 1 file siêu văn bản tên CHUYENMA.HTM. Nội dung đã chuyển có
dạng như sau :
USE CHUYENMA.DBF

LOCATE FOR NOIDUNG<>" "
SET PRIN ON
SET PRIN TO FILE CHUYENMA.HTM
?"<HTML><META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=x-user-defined'>"
?"<FONT FACE=Arial>"
?BKTOUNI(NOIDUNG)
?"</HTML>"
SET PRIN TO
SET PRIN OFF
USE
RETURN
Quy ®Þnh <BR>
cđa Cơc S¸ng chÕ - ban khoa häc nhµ níc sè 545 ngµy 26 th¸ng 11 n¨m 1991 vỊ h×nh thøc vµ néi dung ®¬n
yªu cÇu b¶o hé s¸ng chÕ, gi¶i ph¸p h÷u Ých<BR>
C¨n cø theo kho¶n 3 §iỊu 5 cđa Ph¸p lƯnh B¶o hé qun së h÷u c«ng nghiƯp;<BR>
C¨n cø theo kho¶n 2 §iỊu 28 cđa §iỊu lƯ vỊ S¸ng kiÕn c¶i tiÕn kü tht - hỵp lý ho¸ s¶n xt vµ s¸ng chÕ, kho¶n
1 §iỊu 30 cđa §iỊu lƯ vỊ Gi¶i ph¸p h÷u Ých vµ ®iĨm 98 cđa Th«ng t sè 1134/SC ngµy 17-10-1991 cđa ban
Khoa häc Nhµ níc "Híng dÉn thi hµnh NghÞ ®Þnh 84/H§BT ngµy 20-3-1990 cđa Héi ®ång Bé trëng vỊ viƯc sưa
®ỉi, bỉ sung §iỊu lƯ vỊ S¸ng kiÕn c¶i tiÕn kü tht - hỵp lý ho¸ s¶n xt vµ s¸ng chÕ; §iỊu lƯ vỊ Nh·n hiƯu hµng
ho¸; §iỊu lƯ vỊ KiĨu d¸ng c«ng nghiƯp; §iỊu lƯ vỊ Gi¶i ph¸p h÷u Ých nh»m thi hµnh Ph¸p lƯnh B¶o hé qun së
h÷u c«ng nghiƯp" (sau ®©y gäi lµ Th«ng t);<BR>
Bạn nhấp đúp file này lên, sẽ nhận được văn bản đã chuyển mã sang Unicode.
Chúng tôi đã dùng cách này để chuyển mã 1 file văn bản dài 20 trang A4. Kết quả chuyển rất
tốt.
* Ghi chú : - Các chương trình chuyển mã này cũng có thể hoạt động tốt trong môi trường
Foxpro For Dos. Tuy nhiên do giới hạn bộ nhớ, mỗi lần chỉ có thể chuyển được 6-7 trang văn bản.
- Phương pháp nêu trên chỉ có thể thực hiện được với các bảng mã Tiếng Việt 1 byte (VD : bộ
fonts ABC), không thực hiện được với mã 2 bytes (VD : VNI for Windows).
IV.- KẾT QUẢ ỨNG DỤNG :
Cũng với phương pháp trên, chúng tôi đã tạo một hàm chuyển mã từ TCVN3 sang VNI For

Windows. Hai hàm này đã được ứng dụng nhiều trong chương trình khai thác CSDL Quản lý CB, GV
của Bộ GD&ĐT. Trong hội nghò tháng 1/2004 do Bộ tổ chức, hàm BKTOVNI đã được tích hợp vào
Chương trình QL CB,GV của Bộ, nhờ đó đã khắc phục được một nhược điểm phổ biến trong chương
trình của Bộ là việc tạo các mẫu in (các loại quyết đònh, lý lòch cá nhân,...) thường bò sai hoặc mất một
số ký tự (ư, ẩ, ả, ...) khi dùng bảng mã TCVN3. Nhở phương pháp này, việc khai thác chương trình
Quản lý nhân sự của Bộ GD & ĐT ở các đòa phương có hiệu quả hơn.
NGUYỄN NGỌC ÂN
Tháng 04/2004
<HTML><META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=x-user-defined'>
<FONT FACE=Arial>
Quy &#273;&#7883;nh <BR>
c&#7911;a C&#7909;c S&#225;ng ch&#7871; -U&#7927; ban khoa h&#7885;c nh&#224; n&#432;&#7899;c
s&#7889; 545 ng&#224;y 26 th&#225;ng 11 n&#259;m 1991 v&#7873; h&#236;nh th&#7913;c v&#224;
n&#7897;i dung &#273;&#417;n y&#234;u c&#7847;u b&#7843;o h&#7897; s&#225;ng ch&#7871;, gi&#7843;i
ph&#225;ph&#7919;u &#237;ch<BR>
C&#259;n c&#7913; theo kho&#7843;n 3 &#272;i&#7873;u 5 c&#7911;a Ph&#225;pl&#7879;nh B&#7843;o
h&#7897; quy&#7873;n s&#7903; h&#7919;u c&#244;ng nghi&#7879;p;<BR>
C&#259;n c&#7913; theo kho&#7843;n 2 &#272;i&#7873;u 28 c&#7911;a &#272;i&#7873;u l&#7879;
v&#7873; S&#225;ng ki&#7871;n c&#7843;i ti&#7871;n k&#7929; thu&#7853;t - h&#7907;p l&#253; ho&#225;
s&#7843;n xu&#7845;t v&#224; s&#225;ng ch&#7871;, kho&#7843;n 1 &#272;i&#7873;u 30 c&#7911;a
&#272;i&#7873;u l&#7879; v&#7873; Gi&#7843;i ph&#225;p h&#7919;u &#237;ch v&#224;
&#273;i&#7875;m 98 c&#7911;a Th&#244;ng t&#432; s&#7889; 1134/SC ng&#224;y 17-10-1991 c&#7911;a
U&#7927; ban Khoa h&#7885;c Nh&#224;n&#432;&#7899;c "H&#432;&#7899;ng d&#7851;n thi h&#224;nh
Ngh&#7883; &#273;&#7883;nh 84/H&#272;BT ng&#224;y 20-3-1990 c&#7911;a H&#7897;i &#273;&#7891;ng
B&#7897; tr&#432;&#7903;ng v&#7873; vi&#7879;c s&#7917;a &#273;&#7893;I, b&#7893; sung
&#272;i&#7873;u l&#7879; v&#7873; S&#225;ng ki&#7871;n c&#7843;i ti&#7871;nk&#7929; thu&#7853;t -
h&#7907;p l&#253; ho&#225; s&#7843;n xu&#7845;t v&#224;s&#225;ng ch&#7871;; &#272;i&#7873;u
l&#7879; v&#7873; Nh&#227;n hi&#7879;u h&#224;ngho&#225;; &#272;i&#7873;u l&#7879; v&#7873;
Ki&#7875;u d&#225;ng c&#244;ng ghi&#7879;p; &#272;i&#7873;u l&#7879; v&#7873; Gi&#7843;i
ph&#225;p h&#7919;u &#237;ch nh&#7857;m thi h&#224;nh Ph&#225;p l&#7879;nh B&#7843;o h&#7897;

quy&#7873;n s&#7903; h&#7919;u c&#244;ng nghi&#7879;p" (sau &#273;&#226;y g&#7885;i l&#224;
Th&#244;ng t&#432;);<BR>
</HTML>

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×