1. Trang chủ
  2. » Giáo án - Bài giảng

Chuyển bảng mã TV Unicode

5 901 11
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chuyển Bảng Mã Tiếng Việt Unicode
Tác giả Nguyễn Ngọc Ân
Người hướng dẫn Phó Giáo Sư. Nguyễn Văn A
Trường học Trường Đại Học An Giang
Chuyên ngành Công Nghệ Thông Tin
Thể loại Sáng Kiến Kinh Nghiệm
Năm xuất bản 2003
Thành phố An Giang
Định dạng
Số trang 5
Dung lượng 21,25 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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, ....

Trang 1

* 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="ế"

Trang 2

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

Trang 3

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 NguyƠn BØnh Khiªm

NguyƠn Ngäc 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.

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 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 :

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

Trang 4

- Mụỷ file vaờn baỷn maừ tieỏng Vieọt TCVN3 (Boọ font ABC) trong WORDPAD, cheứn caực theỷ ngaột doứng <BR> vaứo cuoỏi moói ủoaùn vaờn baỷn Lửu laùi daùng TEXT Only Copy toaứn boọ noọi dung vaờn baỷn trong file naứy vaứo Clipboard (Nhaỏn toồ hụùp phớm Ctrl+A, nhaỏn tieỏp Ctrl+C)

(Lửu yự : Chổ mụỷ file trong WORDPAD, khoõng mụỷ file trong WINWORD, vỡ neỏu vaọy, khi copy

vaờn baỷn maừ TCVN3 ủeồ daựn vaứo trửụứng Memo seừ bũ maỏt moọt soỏ kyự tửù)

Vớ duù : Chuựng toõi ủaừ boồ sung theỷ ngaột doứng <BR> vaứ Copy ủoaùn vaờn baỷn maừ TCVN3 sau ủaõy

vaứo Clipboard :

- Khụỷi ủoọng VFP, Open baỷng CHUYENMA.DBF, mụỷ field memo NOIDUNG, daựn noọi dung vaờn baỷn vửứa copy vaứo ẹoựng file

- Chaùy chửụng trỡnh CHUYENMA.PRG

Chửụng trỡnh seừ taùo ra 1 file sieõu vaờn baỷn teõn CHUYENMA.HTM Noọi dung ủaừ chuyeồn coự daù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ế - Uỷ 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ộ quyền 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ỹ thuật - hợp lý hoá sản xuất 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 Uỷ 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ỹ thuật - hợp lý hoá sản xuất 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ộ quyền sở hữu công nghiệp" (sau đây gọi là Thông t);<BR>

Trang 5

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>

Ngày đăng: 16/07/2013, 01:26

TỪ KHÓA LIÊN QUAN

w