亂碼問題:用VB讀取UTF-8編碼的文件后是亂碼解决方法
亂碼問題:用VB讀取UTF-8編碼的文件后是亂碼
有一RPX文件用NotePad打開后能正常顯示,其編碼為UTF-8碼,如下:
<?xml version= "1.0 " encoding= "UTF-8 " ?>
現用
Private Sub Command1_Click()
Dim CurStr As String
Dim Str As String
Open "D:\TEST1.RPX " For Input As #1
Do While Not EOF(1)
Line Input #1, CurStr
Loop
End Sub
方法讀取后顯示為亂碼
不知哪位高手能幫忙解決
謝啦!
------解决方案--------------------
将TEST1.RPX文件用记事本打开后另存为为ANSI格式保存,再用VB打开就不是乱码了。
------解决方案--------------------
中国最佳原创:[VB6]支持UTF文本文件访问的模块
http://blog.****.net/zyl910/archive/2006/05/30/762693.aspx
转贴:[VB6]支持UTF文本文件访问的模块
http://chenoe.com/blog/article.asp?id=2030
------解决方案--------------------
头大
------解决方案--------------------
“只是還沒研究透,所以目前還不能解決我的問題”
发TEST1.RPX to magnaforemost at gmail.com
------解决方案--------------------
Private Sub Command1_Click()
Dim fileSize As Long
Dim bTmp() As Byte
Open App.Path & "\utf8.txt " For Binary As #1
fileSize = FileLen(App.Path & "\utf8.txt ")
ReDim bTmp(fileSize) As Byte
Get #1, , bTmp
Close #1
Dim unicode(1) As Byte
Dim lUnicode As Single
Dim index As Long
index = 0
While (index < fileSize)
If ((bTmp(index) And &H80) <> &H80) Then
Debug.Print Chr(bTmp(index))
index = index + 1
Else
unicode(1) = (bTmp(index) And &HF) * 16 + ((bTmp(index + 1) And &H3C) \ 4)
unicode(0) = (bTmp(index + 1) And &H3) * 64 + (bTmp(index + 2) And &H3F)
If ((unicode(1) And &H80) = &H80) Then
lUnicode = -1 '这负数部分未处理可以直接有memcpy进行地址操作
Else
lUnicode = unicode(1) * 256 + unicode(0)
End If
Debug.Print ChrW(lUnicode)
index = index + 3
End If
Wend
End Sub
有一RPX文件用NotePad打開后能正常顯示,其編碼為UTF-8碼,如下:
<?xml version= "1.0 " encoding= "UTF-8 " ?>
現用
Private Sub Command1_Click()
Dim CurStr As String
Dim Str As String
Open "D:\TEST1.RPX " For Input As #1
Do While Not EOF(1)
Line Input #1, CurStr
Loop
End Sub
方法讀取后顯示為亂碼
不知哪位高手能幫忙解決
謝啦!
------解决方案--------------------
将TEST1.RPX文件用记事本打开后另存为为ANSI格式保存,再用VB打开就不是乱码了。
------解决方案--------------------
中国最佳原创:[VB6]支持UTF文本文件访问的模块
http://blog.****.net/zyl910/archive/2006/05/30/762693.aspx
转贴:[VB6]支持UTF文本文件访问的模块
http://chenoe.com/blog/article.asp?id=2030
------解决方案--------------------
头大
------解决方案--------------------
“只是還沒研究透,所以目前還不能解決我的問題”
发TEST1.RPX to magnaforemost at gmail.com
------解决方案--------------------
Private Sub Command1_Click()
Dim fileSize As Long
Dim bTmp() As Byte
Open App.Path & "\utf8.txt " For Binary As #1
fileSize = FileLen(App.Path & "\utf8.txt ")
ReDim bTmp(fileSize) As Byte
Get #1, , bTmp
Close #1
Dim unicode(1) As Byte
Dim lUnicode As Single
Dim index As Long
index = 0
While (index < fileSize)
If ((bTmp(index) And &H80) <> &H80) Then
Debug.Print Chr(bTmp(index))
index = index + 1
Else
unicode(1) = (bTmp(index) And &HF) * 16 + ((bTmp(index + 1) And &H3C) \ 4)
unicode(0) = (bTmp(index + 1) And &H3) * 64 + (bTmp(index + 2) And &H3F)
If ((unicode(1) And &H80) = &H80) Then
lUnicode = -1 '这负数部分未处理可以直接有memcpy进行地址操作
Else
lUnicode = unicode(1) * 256 + unicode(0)
End If
Debug.Print ChrW(lUnicode)
index = index + 3
End If
Wend
End Sub