Set stm = CreateObject("adodb.stream")
          stm.Type = 2       '以本模式读取
          stm.mode = 3
          stm.CharSet = "unicode"
          stm.Open
A="北"
b="北"
a = StrConv(T, vbFromUnicode)
stm.WriteText a & vbCrLf
stm.WriteText b & vbCrLf用winhex查看 结果为:
FF FE B1 B1 0D 0A 0D 00 0A 00 17 53 0D 00 0A 00 0D 00 0A 00
可我想要的结果是
FF FE B1 00 B1 00 0D 0A 0D 00 0A 00 17 53 0D 00 0A 00 0D 00 0A 00
即 “北”字 转换成 B1 00 B1 00 而现在写入后成 B1B1

解决方案 »

  1.   

    靠墙想了会
    Dim a(0 To 1) As ByteDim B1, B2, B3, B4 As Byte
    QW = "c:\test.txt"MsgBox Hex(Asc("北"))
    Open QW For Binary As #1
     Dim S() As String
    Dim B() As Byte
    Dim I As Long
    Dim L As Long
    S = Split("FF FE B1 00 B1 00 0D 00 0A 00 17 53 OD 00 0A 00 ", " ")
    L = UBound(S)
    ReDim B(L) As Byte
    For I = 0 To L
    B(I) = CByte(Val("&h" & S(I)))
    Debug.Print B(I);
    NextPut #1, , B
    Close #1
     
    Close
    MsgBox "已保存", , "提示"
      

  2.   

    “北”字 转换成 B1 00 B1 00 就是 Unicode 编码?我倒是第一次听说。
      

  3.   

    “北”的 GB2312 编码是 &HB1B1
      Unicode 编码是 &H5317
      

  4.   

    汉字的区位码和汉字之间相互转换可以使用函数:StrConv来实现,具体的方法如下:
    1、汉字->区位码
    Dim byteU() As Byte
        Dim intP As Integer
        Dim strP As String
        byteU = StrConv("北", vbFromUnicode)
        strP = ""
        For intP = LBound(byteU) To UBound(byteU)
            strP = strP & Right("00" & Hex(byteU(intP)), 2) & " "
        Next intP
        Debug.print strP2、区位码->汉字
        
        Dim byteU(1) As Byte
        Dim intP As Integer
        Dim strP As String
        byteU(0) = &HB1
        byteU(1) = &HB1
        strP = StrConv(byteU, vbUnicode)
        Debug.Print strP
      

  5.   

    我用winhex打开原始文件时 就是这么显示的 
    “北” B1 00 B1 00  回车换行后  
    “北” 17 53
    我现在想用4楼的 代码 做个转换函数,然后就能批量转了
      

  6.   

    我用winhex打开原始文件时 就是这么显示的 
    “北” B1 00 B1 00  回车换行后  
    “北” 17 53
    我现在想用4楼的 代码 做个转换函数,然后就能批量转了