VB对文字无法自动识别,因为IE的自动识别实际是根据页面的Charset而转换的。
请参看我的问题:“VB程序如何支持多语种显示?”
请参看我的问题:“VB程序如何支持多语种显示?”
解决方案 »
- 没分了.没分了.问个问题.希望高手不要只为了分而来~
- sub main()
- 如何将本地数据库的SQL数据,移到局域网中一台计算机Access上?
- 在vb.net环境下编写的代码为什么在vb.6的环境下不能运行??编译好的程序也是一样,不会是版本冲突吧?????????
- 关于WindowsMediaPlayer控件的问题!
- 请问如何把sql server中的数据库结构到导出成文本文件
- 菜鸟问题
- RegSetValue是什么意思?
- 如何建立不相邻,不重复的随机序列?
- c语言转vb时调用约定错误49....求高手
- 谁有Wise Installation System 9.0 的中文帮助?谢谢
- 在VB中如何将一个数组(数组的每一个元素是一个字符串)传给VC写的DLL?
也都有处理的办法(如用byte数组来代替字符串)说了这么一大堆Unicode的坏话,还没说到正题呢,由于VB6内置对Unicode的支持,而Unicode里面分别和 GBK 以及Big5汉字都有对应关系,所以要实现转换也只是一件小事,下面我们就有请本次女主角出场。(哗哗哗哗……掌声不绝。)函数strConv! 这个美眉大家可能在VB5里面也都见过的,她有一些保镖,可以帮她把字符串在Unicode和本地编码之间转换,而在VB6里面呢,strConv又多了一个保镖!大家请仔细看:strConv(string,conversion) `VB5
StrConv(string,conversion,LCID) `VB6string呢,就是预转换的字符串了(提示一下,也可以使用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字转到六七千字,一一映射,没有缺字才怪!