VB6内置的内码转换功能

sldhgr

sldhgr

2016-02-19 17:56

下面请跟着图老师小编一起来了解下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码,合理运用这个参数,就可以写出一个非常简单的内码转换工具!
  什么?你还不明白,哎,就把源码给你看看吧。
  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了。
  不过方便是方便了,但是呢,也有它自己的缺陷,老实说,用这种方法来转换GBGBK到Big5码是非常好的,可是把Big5码转过来的话,结果居然是繁体的!看起来真的是很不爽,哎,这也没有办法,Unicode里面就是这个对应关系;此外呢,这样转换毕竟是走了两步路,所以呢,从理论上来说,比别的转码软件慢了一倍!
  但是这样转过来可是有两大好处的,一,不会有错误的码,这可是国际标准哟,你想什么?二,不会有缺字,就像现在的很多转码软件都是从Big5转到GB码,想想看15000字转到六七千字,一一映射,没有缺字才怪!->

展开更多 50%)
分享

猜你喜欢

VB6内置的内码转换功能

编程语言 网络编程
VB6内置的内码转换功能

GB与BIG5内码转换COM原代码

ASP
GB与BIG5内码转换COM原代码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VB6中的FSO对象模型

编程语言 网络编程
VB6中的FSO对象模型

用VB6创建MTS组件

ASP
用VB6创建MTS组件

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

VB6窗体的生命周期

电脑网络
VB6窗体的生命周期

imgedit imgadmin tiff koda vb6

电脑网络
imgedit imgadmin tiff koda vb6

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

2024唯美qq网名你的故事我能懂

2024唯美qq网名你的故事我能懂

getVarDate 方法

getVarDate 方法
下拉加载更多内容 ↓