GB与BIG5内码转换COM的原代码(已经贴在开发者俱乐部了,在这里再贴一下)
[入库:2005年8月18日] [更新:2007年3月24日]
|
这个com用到了一个vc的资源文件。就是字典。 大家可以去61.134.75.70/download/gb2big5.zip下载
原代码如下:
'////////////////////////////////////////// '中文名称:gb与big5内码互换控件 '英文名称:gb2big5 '作者:blood '版本:1.0 '制作时间:2002.3.5 '版权所有 blood 2002 - 2003 '//////////////////////////////////////////
option explicit
'定义变量 dim big5data as variant dim gbdata as variant
'定义自定义类型,用来处理编码的高低字问题 type chinesetypea lochar as byte hichar as byte end type
private big5type(&ha1 to &hff, &h40 to &hfe) as chinesetypea '对应于big5字库 private gbtype(&ha7 to &hff, &ha1 to &hfe) as chinesetypea '对应与gb字库
'////////////////// '公共函数开始 '//////////////////
'big5转换到gb的函数 function big5togb(strsource as string) as string dim i as long, y as long '定义数组,用来存放big5和gb内码数据 dim btebig5() as byte dim btegb() as byte '如果输入的内容为空,则退出函数 if strsource = "" then big5togb = "" exit function end if '将big5数组的类型从unicode编码转换为系统缺省码 btebig5 = strconv(strsource, vbfromunicode) '确定big5数组的下标,用来循环将所有的big5内容转换为gb内码 y = ubound(btebig5) redim btegb(0 to y) for i = 0 to y if i = y then btegb(i) = btebig5(i) exit for end if if btebig5(i) < &ha1 or btebig5(i + 1) < &h40 then btegb(i) = btebig5(i) else btegb(i) = big5type(btebig5(i), btebig5(i + 1)).lochar btegb(i + 1) = big5type(btebig5(i), btebig5(i + 1)).hichar i = i + 1 end if next i '将系统缺省码转换为unicode编码 big5togb = strconv(btegb, vbunicode) '重新初始化gb数组,以释放内存 erase btegb end function
'gb转换到big5的函数
function gbtobig5(strsource as string) as string dim i as long, y as long '定义数组,用来存放big5和gb内码数据 dim btegb() as byte dim btebig5() as byte '如果输入的内容为空,则退出函数 if strsource = "" then gbtobig5 = "" exit function end if '将gb数组的类型从unicode编码转换为系统缺省码 btegb = strconv(strsource, vbfromunicode) '确定gb数组的下标,用来循环将所有的big5内容转换为gb内码 y = ubound(btegb) redim btebig5(0 to y) for i = 0 to y if i = y then btebig5(i) = btegb(i) exit for end if if btegb(i) < &ha1 or btegb(i + 1) < &ha1 then btebig5(i) = btegb(i) else if btegb(i) < &hb0 and btegb(i + 1) >= &ha1 then btebig5(i) = gbtype(btegb(i) + 6, btegb(i + 1)).lochar btebig5(i + 1) = gbtype(btegb(i) + 6, btegb(i + 1)).hichar else btebig5(i) = gbtype(btegb(i), btegb(i + 1)).lochar btebig5(i + 1) = gbtype(btegb(i), btegb(i + 1)).hichar end if i = i + 1 end if next i '将系统缺省码转换为unicode编码 gbtobig5 = strconv(btebig5, vbunicode) '重新初始化big5数组,以释放内存 erase btebig5 end function
'////////////////// '公共函数结束 '//////////////////
'类初始化 private sub class_initialize() dim i as long dim j as long dim ilen as long '从资源文件中读取gb与big5的字库 gbdata = loadresdata(102, "custom") '//读取gb字库 big5data = loadresdata(101, "custom") '//读取big5字库 for i = &ha1 to &hfe for j = &h40 to &hfe big5type(i, j).lochar = big5data(ilen) big5type(i, j).hichar = big5data(ilen + 1) ilen = ilen + 2 next j next i ilen = 0 for i = &ha7 to &hfe for j = &ha1 to &hfe gbtype(i, j).lochar = gbdata(ilen) gbtype(i, j).hichar = gbdata(ilen + 1) ilen = ilen + 2 next j next i end sub
|
本文关键:GB BIG5
本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)