VB读UTF8中文乱码问题

转载 2016年09月14日 15:07:22
根据反馈,代码已作修改并调试通过:

分二步:
一、建立一个模块,复制下面代码
Option Explicit
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Const CP_UTF8 = 65001

'读文件至变量
Private Function GetFile(FileName As String) As String
Dim i As Integer, BB() As Byte
    If Dir(FileName) = "" Then Exit Function
    i = FreeFile
    ReDim BB(FileLen(FileName) - 1)
    Open FileName For Binary As #i
    Get #i, , BB
    Close #i
    GetFile = BB
End Function

'功能: 把Utf8字符转化成ANSI字符
Public Function UTF8_Decode(FileName As String) As String
Dim sUTF8 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
    sUTF8 = GetFile(FileName)
    If LenB(sUTF8) = 0 Then Exit Function
    On Error GoTo EndFunction
    bytUtf8 = sUTF8
    lngUtf8Size = UBound(bytUtf8) + 1
    lngBufferSize = lngUtf8Size * 2
    strBuffer = String$(lngBufferSize, vbNullChar)
    lngResult = MultiByteToWideChar(CP_UTF8, 0, bytUtf8(0), _
            lngUtf8Size, StrPtr(strBuffer), lngBufferSize)
    If lngResult Then
        UTF8_Decode = Left(strBuffer, lngResult)
    End If
EndFunction:
  
End Function

二、调用举例:
如果你想把一个"c:\1.txt"的UTF-8文件转换为ANSI编码,可这样调用
dim s as string
s=UTF8_Decode("c:\1.txt") '文件名请根据实际修改
此时,s存放的就是ANSI格式编码了,不会出现乱码问题

VB(Visual Basic) UTF8 字符编码

  • 2010年07月20日 18:30
  • 1004B
  • 下载

汉字在VB和oracle 以及C#和oracle之间乱码问题

 oracle 数据库用字符集AL32UTF8,VB程序通过ADODB连接数据库。存储的汉字在数据库里面是乱码。但是通 过VB程序解读出来的汉字确是正确的。换成C#程序,连接oracle数据库...
  • mycoolme5
  • mycoolme5
  • 2017-04-14 09:02:11
  • 328

VB UTF-8编码与解码

Option ExplicitPrivate Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ...
  • CityBird
  • CityBird
  • 2009-09-26 13:48:00
  • 7481

VB6存取UTF-8文件

目录目录 功能介绍 代码演示功能介绍这个代码可以将VB变量的Unicode字符存为UTF-8格式的文本文件。代码演示'工程要引用 Microsoft ActiveX Data Objects 2.8...
  • greatbody
  • greatbody
  • 2016-07-31 12:53:30
  • 1610

Utf-8编码与解码(vb6代码)

  • 2016年03月01日 22:10
  • 12KB
  • 下载

VB完美模仿DOS命令行输出

  • 2009年12月16日 19:38
  • 7KB
  • 下载

【QTP】FSO读取/写txt文本乱码解决方法

FilesystemObject OpenTextFile 默认会用系统的编码读取文本,默认一般都是ANSI,如果服务器操作系统不支持某种语言,那么就会出乱码了。你就必须把文本转换成Unicode,同...
  • wangsy0202
  • wangsy0202
  • 2016-06-20 11:13:06
  • 469

FSO 读取/写txt文本乱码解决方法

FilesystemObject OpenTextFile 默认会用系统的编码读取文本,默认一般都是ANSI,如果服务器操作系统不支持某种语言,那么就会出乱码了。你就必须把文本转换成Unicode,同...
  • xifeijian
  • xifeijian
  • 2013-03-05 15:35:45
  • 3948

VB 读写UTF8文本文件

=========================读取======================================================= Private Sub cmdR...
  • limlimlim
  • limlimlim
  • 2014-05-08 13:12:05
  • 2919

vb读mysql库乱码解决的方法

   很多vb+mysql的朋友可能都会碰到一个问题,使用中文去access  MYSQL库的时候,会出现乱码.如果是向库里去write,则写库语句无法执行,如果是read中文,则取出来的是"?",有...
  • jomakzhao
  • jomakzhao
  • 2007-03-28 08:40:00
  • 4221
收藏助手
不良信息举报
您举报文章:VB读UTF8中文乱码问题
举报原因:
原因补充:

(最多只允许输入30个字)