为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

VB6内置的内码转换功能

2017-10-25 3页 doc 14KB 14阅读

用户头像

is_954223

暂无简介

举报
VB6内置的内码转换功能VB6内置的内码转换功能 嘿嘿,看到这个题目,想必吓了一大跳吧,或者是摆出一副不相信的表情?不用着急,请听我慢慢道来。 话说这个VB6,很是无耻,居然内置了支持Unicode的功能,也就是说,当你读入一个字符 串时,它根据本地缺省语言的对应关系将之转换为Unicode,输出时,再从Unicode转换为本地编码。一方面,它当然方便啦,随便出个什么语言的版本都好方便的,而且在Unicode的系统上,如NT,那它可就如鱼得水,Unicode毕竟是软件发展的方向,像现在中文Win9X使用的GBK内码,实际上就是向着Unicode走...
VB6内置的内码转换功能
VB6内置的内码转换功能 嘿嘿,看到这个题目,想必吓了一大跳吧,或者是摆出一副不相信的情?不用着急,请听我慢慢道来。 话说这个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码,合理运用这个参数,就可以写出一个非常简单的内码转换工具! 什么?你还不明白,哎,就把源码给你看看吧。 Dim iReadNumber As Integer `读文件号 Dim iWriteNumber As Integer `写文件号 Dim mem() As Byte `byte数组 Dim strFileName As String `文件名 Dim lLength As Long `文件长度 `将文件内容读入mem byte数组 iReadNumber = FreeFile strFileName = TextFileName.Text lLength = FileLen(strFileName) ReDim mem(lLength) As Byte Open strFileName For Binary As #iReadNumber Get #iReadNumber,,mem Close #iReadNumber `将mem数组转换为Big5码所对应的Unicode码 mem = StrConv(mem,vbUnicode,&H404) `再将Unicode码转换为GBK编码 mem = StrConv(mem,vbFromUnicode,&H804) `写到源文件里去 iWriteNumber = FreeFile Kill strFileName Open strFileName For Binary As #iWriteNumber Put #iWriteNumber,,mem Close #iWriteNumber `结束 (笔者用的是中文VB6 Professional 版 + Service Pack3)。 怎么样,方便吧?短短几行就把Big5码转换到GBK了。 不过方便是方便了,但是呢,也有它自己的缺陷,老实说,用这种方法来转换GB\GBK到Big5 码是非常好的,可是把Big5码转过来的话,结果居然是繁体的!看起来真的是很不爽,哎,这也没有办法,Unicode里面就是这个对应关系;此外呢,这样转换毕竟是走了两步路,所以 呢,从理论上来说,比别的转码软件慢了一倍! 但是这样转过来可是有两大好处的,一,不会有错误的码,这可是国际哟,你想什么? 二, 不会有缺字,就像现在的很多转码软件都是从Big5转到GB码,想想看15000字转到六七千字,一一映射,没有缺字才怪! [来源:programfan.com(编程爱好者)][选取:kjkimberly]
/
本文档为【VB6内置的内码转换功能】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索