譬如有: str1 = "A你"
bytetmp = StrConv(str1, vbFromUnicode)
则得到的结果为
bytetmp(0) = 65  bytetmp(1) = 196 bytetmp(2) = 227
而 "你"的Unicode值: Ascw("你")= 20320
那么bytetmp(1)、bytetmp(2) 与 20320 是怎样的一做关系呢?因为我可能要把bytetmp发送到java程序中,在java程序中根据unicode值来反向生成字符串。

解决方案 »

  1.   

    将bytetmp(1)与bytetmp(2)转换成二进制后和在一起,再转换成十进制
      

  2.   

    我也很奇怪,用vbUnicode参数得到的结果是96,0也不对,"你"的ascii码是-15133,也就是196和227,而unicode码是20230,对不上啊。
    关注...
      

  3.   

    Dim a As String
    Private Sub Command1_Click()
        Dim LngStr As Long
        Dim i As Long
        Dim Lnga() As Long
        LngStr = Len(a)
        For i = 1 To LngStr
            ReDim Preserve Lnga(i)
            Lnga(i) = AscW(Mid(a, i, 1))
            MsgBox Lnga(i)
        Next
        
    End SubPrivate Sub Form_Load()
        a = "A你"
    End Sub
    我想上面的代码应该能满足你的要求!
    就是将“A”和“你”的Unicode码分别存储到数组中!
      

  4.   

    Dim a As StringDim Lnga() As Long
    '将字符串转换成Unicode码保存到Lnga()数组中
    Private Sub Command1_Click()
        Dim LngStr As Long
        Dim i As Long
       
        LngStr = Len(a)
        For i = 1 To LngStr
            ReDim Preserve Lnga(i)
            Lnga(i) = AscW(Mid(a, i, 1))
            MsgBox Lnga(i)
        Next
        
    End Sub
    '将保存到Lnga()数组中的Unicode转化成原先的字符串
    Private Sub Command2_Click()
    Dim Stra As String
    Dim i As Long
        For i = 1 To UBound(Lnga)
            Stra = Stra & ChrW(Lnga(i))
        Next
     MsgBox Stra
    End SubPrivate Sub Form_Load()
        a = "A你"
    End Sub字符串转换成Unicode后然后再转换回字符串!
      

  5.   

    你用StrConv转换“A你”的时候StrConv按照3个字节把“A你”变成“A??”转换就出现了你所说的bytetmp(0) = 65  bytetmp(1) = 196 bytetmp(2) = 227的情况!
    如果你按照单个字符转换的时候就不会出现你说的问题了!
      

  6.   

    呵呵,我想问的是这两个数之间有什么关系:
    即 bytetmp(1) = 196 bytetmp(2) = 227 与 20320 到底是怎么联系起来的
    我想不通微软是怎么计算这两者的,其它的什么Unicode呢,还倒知道一二。
      

  7.   

    关键是要知道 Unicode 的编码方法。汉字中的什么 196和 227,应该是汉字的内码。Unicode 的编码应该和这个完全不同才对。
      

  8.   

    有没有哪位能教我这个转换方法呢,因为我可能不在Windows下面转换这个,所以现在好麻烦。