VB6内置的内码转换功能
2018-06-17 17:10:49来源:未知 阅读 ()
话说这个VB6,很是无耻,居然内置了支持Unicode的功能,也就是说,当你读入一个字符串时,它根据本地缺省语言的对应关系将之转换为Unicode,输出时,再从Unicode转换为本地编码。一方面,它当然方便啦,随便出个什么语言的版本都好方便的,而且在Unicode的系统上,如NT,那它可就如鱼得水,Unicode毕竟是软件发展的方向,像现在中文Win9X使用的GBK内码,实际上就是向着Unicode走了一大步。可是在另一方面,这种支持实际上极大地延缓了字符串的处理时间!想想看,如果我们从文件里读一行并显示,本来是很简单的事情,可是在VB6里面,实际上多了一段转换到Unicode的时间,如果我们用字符串从原文件里读一行,然后分析,再写到目的文件里去,实际上就多了两重的时间(本地到Unicode,unicode到本地)。当然对于这种小事,高手们想必也都有处理的办法(如用byte数组来代替字符串)
说了这么一大堆Unicode的坏话,还没说到正题呢,由于VB6内置对Unicode的支持,而Unicode里面分别和GBK以及Big5汉字都有对应关系,所以要实现转换也只是一件小事,下面我们就有请本次女主角出场。(哗哗哗哗……掌声不绝。)
函数strConv!这个美眉大家可能在VB5里面也都见过的,她有一些保镖,可以帮她把字符串在Unicode和本地编码之间转换,而在VB6里面呢,strConv又多了一个保镖!大家请仔细看:
strConv(string,conversion)`VB5
StrConv(string,conversion,LCID)`VB6
string呢,就是预转换的字符串了(提示一下,也可以使用byte数组)。
conversion:是一个整数,只决定转换方式,VB里定义了一些常量,如VBFromUnicode、VBUnicode等等,这些不用我解释大家应该也明白了吧。
LCID:哈,这可是VB6新加入的参数了,长整数,可以指定编码方式,如&H404,即Big5码,&H804即GBK码,合理运用这个参数,就可以写出一个非常简单的内码转换工具!
什么?你还不明白,哎,就把源码给你看看吧。
DimiReadNumberAsInteger`读文件号
DimiWriteNumberAsInteger`写文件号
Dimmem()AsByte`byte数组
DimstrFileNameAsString`文件名
DimlLengthAsLong`文件长度
`将文件内容读入membyte数组
iReadNumber=FreeFile
strFileName=TextFileName.Text
lLength=FileLen(strFileName)
ReDimmem(lLength)AsByte
OpenstrFileNameForBinaryAs#iReadNumber
Get#iReadNumber,,mem
Close#iReadNumber
`将mem数组转换为Big5码所对应的Unicode码
mem=StrConv(mem,vbUnicode,&H404)
`再将Unicode码转换为GBK编码
mem=StrConv(mem,vbFromUnicode,&H804)
`写到源文件里去
iWriteNumber=FreeFile
KillstrFileName
OpenstrFileNameForBinaryAs#iWriteNumber
Put#iWriteNumber,,mem
Close#iWriteNumber
`结束
(笔者用的是中文VB6Professional版+servicepack3。)
怎么样,方便吧?短短几行就把Big5码转换到GBK了。
不过方便是方便了,但是呢,也有它自己的缺陷,老实说,用这种方法来转换GB\GBK到Big5码是非常好的,可是把Big5码转过来的话,结果居然是繁体的!看起来真的是很不爽,哎,这也没有办法,Unicode里面就是这个对应关系;此外呢,这样转换毕竟是走了两步路,所以呢,从理论上来说,比别的转码软件慢了一倍!
但是这样转过来可是有两大好处的,一,不会有错误的码,这可是国际标准哟,你想什么?二,不会有缺字,就像现在的很多转码软件都是从Big5转到GB码,想想看15000字转到六七千字,一一映射,没有缺字才怪!->
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:VB中调用带参数存储过程的实现
下一篇:用VB编写入侵监听程序(上)
- VB6中的FSO对象模型 2018-06-17
- 浅谈用VB6.0编写木马程序 2018-06-17
- 解除网虫心病VB做定时断线程序 2018-06-17
- 未公开的返回数组型函数加速秘诀 2018-06-17
- 走进VB6啃一块骨头 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash