有一个utf8编码的CSV文件,要把它读取出来并显示在VB应用程序中怎么做?这个转换函数怎么写?

解决方案 »

  1.   

    这个贴一直没人回复,工程完后,回过头来看这个问题,我把解决的方法帖出来吧,希望对有需要的人有一点帮助。
    Option ExplicitPublic Const CP_UTF8 = 65001
    Public Const CP_ACP = 0
    Public Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As LongPublic Function ConvertToUnicode(bytes() As Byte, l As Long) As Byte()
    '//参数说明:
    '//bytes(),二进制数组,可以是从一个文件或各种编码的字符串取得
    '//l,bytes()数组的长度。
    '//MultiByteToWideChar(CP_UTF8, 0, VarPtr(bytes(0)), l, VarPtr(byteBuff1(0)), 0)
    '//这中间的CP_UTF8,换成其它便可完成其它编码的转换
        Dim byteBuff1() As Byte
        Dim byteBuff2() As Byte
        Dim i As Integer
        Dim s As Long
        Dim strResult As String
        Dim retCode As Long
        If UBound(bytes) < 1 Then
            ConvertToUnicode = ""
            Exit Function
        End If
        ReDim byteBuff1(l * 4)
        s = MultiByteToWideChar(CP_UTF8, 0, VarPtr(bytes(0)), l, VarPtr(byteBuff1(0)), 0)
        ReDim byteBuff1(s * 2 - 1)
        retCode = MultiByteToWideChar(CP_UTF8, 0, VarPtr(bytes(0)), l, VarPtr(byteBuff1(0)), s)    ConvertToUnicode = byteBuff1
    End Function
      

  2.   

    vba中有strconv函数可以实现上面API的功能