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 UTF-8编码与解码

Option ExplicitPrivate Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ...
  • CityBird
  • CityBird
  • 2009年09月26日 13:48
  • 7169

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

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

VB实现Base64 编解码

作者:iamlasong 一、编码规则     编码规则网上很多,为了文章的完整性,这里简单的叙述一下。Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数...
  • iamlaosong
  • iamlaosong
  • 2014年07月28日 15:06
  • 7187

【ASP】UTF-8编码的vbscript页面,调试信息的乱码问题

在被UTF-8编码的vbscript页面,在写程序的过程中,不小心写错的话,在页面的输出信息是乱码的,如下图所示: 让人无法得知错误的原因。 毕竟在vbscript最初发展的时候,UTF-...
  • yongh701
  • yongh701
  • 2016年01月18日 20:18
  • 2301

Java读取txt或其他文件以UTF-8格式输出的时候,第一行代码出现“?”乱码的原因及解决方案!

Java读取txt或其他文件以UTF-8格式输出的时候,第一行代码出现“?”乱码的原因及解决方案!...
  • jspping
  • jspping
  • 2016年04月28日 16:16
  • 2886

Linux下MySQL5.6的修改字符集编码为UTF8(解决中文乱码问题,亲测可用!)

Linux下MySQL5.6的修改字符集编码为UTF8(解决中文乱码问题) 一、登录MySQL查看用 SHOW VARIABLES LIKE ‘character%’; 下字符集,显示如下: +...
  • qq_34178598
  • qq_34178598
  • 2017年12月13日 20:32
  • 146

MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题

MySQL中涉及的几个字符集character-set-server/default-character-set:服务器字符集,默认情况下所采用的。character-set-database:数据库...
  • k8080880
  • k8080880
  • 2011年01月11日 01:41
  • 764

MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题

MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的。 character-set-databa...
  • gyflyx
  • gyflyx
  • 2014年07月21日 23:34
  • 596

mysql5.5 解决中文乱码问题 修改默认编码为utf8

1 查看当前编码 进入mysql 执行 show variables like 'character%'; 若发现下图标记的6项中有非utf8编码 则需要修改 2 修...
  • ghyg525
  • ghyg525
  • 2017年05月11日 16:20
  • 1047

perl 解决mysql utf8中文乱码 问题

mysql utf8 中文问题: zabbix:/root/sbin# cat a1.pl use DBI; my $dbUser='DEVOPS'; my $user="root"; my $pa...
  • zhaoyangjian724
  • zhaoyangjian724
  • 2017年03月10日 20:05
  • 1077
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB读UTF8中文乱码问题
举报原因:
原因补充:

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