这里难道就没有高手吗?VB程序读汉字文件乱码!如何解决?
文件内容为:
s英国as
可是用VB程序读出来时却是乱码!
怎么上传附件啊?想上传那个文本文件!
[解决办法]
你那个文件是UTF-8的嘛
一般新建的TXT都是Unicode的.
所以才会是12个字节.
要读的方法多了去了~~~~~连我所知道的就有两种.
这里给你一种简单的:
Public Function ReadFile(ByVal FileName As String) As String
Dim objStream As Object
Set objStream = CreateObject( "ADODB.Stream ")
With objStream
.Type = 2
.Mode = 3
.Open
.Charset = "UTF-8 " '不同编码时自己换
.LoadFromFile FileName
ReadFile = .ReadText
.Close
End With
End Function
直接调用ReadFile( "tmp1.txt "),返回值就是它的内容了.
另外,很不喜欢你那个标题.
高手就非要有义务来为你解决问题?
真正的高手一见你这标题,都懒得进来了.
要我也是高手,同样不会进!
不过用这类标题的问题一般都不会太难~~呵呵
[解决办法]
'Purpose:Convert Utf8 to Unicode
Public Function UTF8_Decode(ByVal sUTF8 As String) As String
Dim lngUtf8Size As Long
Dim strBuffer As String
Dim lngBufferSize As Long
Dim lngResult As Long
Dim bytUtf8() As Byte
Dim n As Long
If LenB(sUTF8) = 0 Then Exit Function
If m_bIsNt Then
On Error GoTo EndFunction
bytUtf8 = StrConv(sUTF8, vbFromUnicode)
lngUtf8Size = UBound(bytUtf8) + 1
On Error GoTo 0
'Set buffer for longest possible string i.e. each byte is
'ANSI, thus 1 unicode(2 bytes)for every utf-8 character.
lngBufferSize = lngUtf8Size * 2
strBuffer = String$(lngBufferSize, vbNullChar)
'Translate using code page 65001(UTF-8)
lngResult = MultiByteToWideChar(CP_UTF8, 0, bytUtf8(0), _
lngUtf8Size, StrPtr(strBuffer), lngBufferSize)
'Trim result to actual length
If lngResult Then
UTF8_Decode = Left$(strBuffer, lngResult)
End If
End If
End sub
学习中回答问题...这个讨论今天有点郁闷...