首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

这里难道就没有高手吗?VB程序读汉字文件乱码!怎么解决

2012-01-14 
这里难道就没有高手吗?VB程序读汉字文件乱码!如何解决?文件内容为:s英国as可是用VB程序读出来时却是乱码!

这里难道就没有高手吗?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

学习中回答问题...这个讨论今天有点郁闷...

热点排行