CHUYỂN MÃ DỮ LIỆU SANG BẢNG MÃ TIẾNG VIỆT UNICODE 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 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 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űng, 18/10/1960, THPT Nguyễn Bỉnh Khiêm<BR> Nguyễn Ngọc Dűng, 11/12/1958, THPT Châu Văn Liêm<BR> Nguyễn Thanh Dűng, 18/10/1969, THPT Nguyễn Chí Thanh<BR> Trần Hoàng Dűng, 28/12/1955, Sở GD-Đ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 NguyƠn Bnh Khiªm NguyƠn Ngc Dịng, 11/12/1958, THPT Ch©u V¨n Liªm NguyƠn Thanh Dịng, 18/10/1969, THPT NguyƠn 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. [...]...Hm BKTOUNI nờu trờn cng cú th vn dng chuyn 1 file vn bn sang mó Unicode Ta ch cn copy ni dung vn bn dỏn vo 1 field kiu Memo trong 1 tp DBF, sau ú xut field ny ra 1 file HTML Chỳng tụi ó lm nh sau : - To 1 file CHUYENMA.DBF, vi 1 Field duy nht l NOIDUNG, kiu memo... Điều về lệ việc sửa về Sáng kiến cải tiếnkỹ thuật - hợp lý hoá Bn nhp ỳp file ny lờn, s nhn c vn bn ó chuyn mó sang Unicode Chỳng tụi ó dựng cỏch ny chuyn mó 1 file vn bn di 20 trang A4 Kt qu chuyn rt tt * Ghi chỳ : - Cỏc chng trỡnh chuyn mó ny cng cú th hot ng tt trong mụi trng Foxpro For Dos Tuy nhiờn do gii hn... cú th thc hin c vi cỏc bng mó Ting Vit 1 byte (VD : b fonts ABC), khụng thc hin c vi mó 2 bytes (VD : VNI for Windows) IV.- KT QU NG DNG : Cng vi phng phỏp trờn, chỳng tụi ó to mt hm chuyn mó t TCVN3 sang VNI For Windows Hai hm ny ó c ng dng nhiu trong chng trỡnh khai thỏc CSDL Qun lý CB, GV ca B GD&T Trong hi ngh thỏng 1/2004 do B t chc, hm BKTOVNI ó c tớch hp vo Chng trỡnh QL CB,GV ca B, nh ú ó khc . CHUYỂN MÃ DỮ LIỆU SANG BẢNG MÃ TIẾNG VIỆT UNICODE 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. 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. 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