如何向UTF-8码的TXT文档里写中文?

解决方案 »

  1.   

    用StrConv()StrConv(aBSTR, vbFromUnicode)    ' 返回一个ANSI(GB2312等)的BSTR
    StrConv(anABSTR, vbUnicode)      ' 返回一个Unicode的BSTR不过这是Unicode和ANSI的转换,UTF-8把Unicode的高位截掉了(Unicode字是16位的),还需补上
      

  2.   

    用 ADODB.Stream :Dim objStream As Object
    Set objStream = CreateObject("ADODB.Stream")With objStream
    .Type = 2
    .Mode = 3
    .Open.Position = 0
    .Charset = "UTF-8"
    .WriteText "’†•¶Žš", 1
    .SaveToFile App.Path & "\utf-8.txt", 2
    .Close
    End With
      

  3.   

    Dim objStream As Object
    Set objStream = CreateObject("ADODB.Stream")With objStream
    .Type = 2
    .Mode = 3
    .Open.Position = 0
    .Charset = "UTF-8"
    .WriteText "中文汉字", 1
    .SaveToFile App.Path & "\utf-8.txt", 2
    .Close
    End With
      

  4.   

    Function USC2UTF8(ByVal HZ As String) As String '汉字换为UTF-8
    Dim i As Integer
    Dim str_Char As String
    Dim DAT(2) As Byte '存放UTF-8数据
    Dim DAT1() As Byte '存放原始字节数据,1汉字需要4个数租元素USC2UTF8 = vbNullString
    For i = 1 To Len(HZ)
      str_Char = Mid(HZ, i, 1)
        '判断是不是汉字
        If AscW(str_Char) > &H0 And AscW(str_Char) < &H800 Then
          USC2UTF8 = USC2UTF8 & str_Char
        Else
        '按照  FFFF FFFF转换为二进制的   1110xxxx 10xxxxxx 10xxxxxx'高位低位也要互换
          ReDim DAT1(1) As Byte
          DAT1 = str_Char 'DAT1变成两个元素的数租
          DAT(0) = (DAT1(1) And 240) / 16 Or 224 '将第一个字节取前4位进行 1110+
          DAT(1) = (DAT1(1) And 15) * 4 + ((DAT1(0) And 192) / 64) Or 128 '将第1个字节后四位进行 10+,连接第2字节前两位
          DAT(2) = DAT1(0) And 63 Or 128 '10连接 第2位后两位连接和第三位
          USC2UTF8 = USC2UTF8 & CStr(Hex(DAT(0))) + CStr(Hex(DAT(1))) + CStr(Hex(DAT(2)))
        End If
     Next
    End Function