我需要使用VB6将带有ANSI编码的文件转换为IBM852 / CP852,这是我到目前为止所做的。
Sub ConvertEncoding(ByVal InCharSet, ByVal OutCharSet, ByVal strInFileName As String, Optional strOutFileName As String = vbNullString)
Dim objInputStream, objOutputStream As Object
If IsCharset(InCharSet) And IsCharset(OutCharSet) Then
Set objInputStream = CreateObject("ADODB.Stream")
Set objOutputStream = CreateObject("ADODB.Stream")
With objInputStream
.Open
.Type = adTypeBinary
.LoadFromFile strInFileName
.Type = adTypeText
.Charset = InCharSet
intWritePosition = 0
objOutputStream.Open
objOutputStream.Charset = OutCharSet
Do While .EOS <> True
strText = .ReadText(adReadLine)
objOutputStream.WriteText strText, adWriteChar
Loop
.Close
End With
objOutputStream.SaveToFile IIf(strOutFileName = vbNullString, strInFileName, strOutFileName), adSaveCreateOverWrite
objOutputStream.Close
End If
End Sub
当我执行它时,上面的代码能够从PC默认转换为UTF-8,Unicode但是当我尝试将其转换为IBM852 / CP852时,它仍然是ANSI编码。
任何人都可以告诉我它有什么问题,BTW代码也来自这里,只是修改了它。