vb有内制转换功能: 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。) 用这种方法来转换GB\GBK到Big5码是非常好的,可是把Big5码转过来的话,结果居然是繁体的!看起来真的是很不爽,哎,这也没有办法,Unicode里面就是这个对应关系;此外呢,这样转换毕竟是走了两步路,所以呢,从理论上来说,比别的转码软件慢了一倍! 但是这样转过来可是有两大好处的,一,不会有错误的码,这可是国际标准哟,你想什么? 二,不会有缺字,就像现在的很多转码软件都是从Big5转到GB码,想想看15000字转到六七千字,一一映射,没有缺字才怪!
有转换的源代码
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。)
用这种方法来转换GB\GBK到Big5码是非常好的,可是把Big5码转过来的话,结果居然是繁体的!看起来真的是很不爽,哎,这也没有办法,Unicode里面就是这个对应关系;此外呢,这样转换毕竟是走了两步路,所以呢,从理论上来说,比别的转码软件慢了一倍!
但是这样转过来可是有两大好处的,一,不会有错误的码,这可是国际标准哟,你想什么? 二,不会有缺字,就像现在的很多转码软件都是从Big5转到GB码,想想看15000字转到六七千字,一一映射,没有缺字才怪!