我现正用编一加密因要处理汉字故用unicode编码将每个汉字或字母对应的编码计算后,得出的数值对应的unicode编码,这样得到的字符不全是汉字或字母,还有一些空格可能是未使用或其它无法显示的西方字符在还原时程序读取这些空格的编码就不是原来的数值而是其它的。这样就无法还原正确。请问应怎样解决?或者用其它编码?怎么用?

解决方案 »

  1.   

    上面的问题用一句话就是,unicode编码是包括全世界的字符的,经计算后的编码数值有可能对应到日文韩文拉丁文等,导致无法显示。那么应该怎么解决?还是用其它编码。我用的是VB
      

  2.   

    我基本明白你的意思,但是不知道你怎么做的
    Option Explicit
    Dim strSource As String
    Dim strTmp As String
    Dim strTmp1 As String
    Private Sub Command1_Click()
    Dim i As Integer
    strSource = "中国人 china 200000,./"
    For i = 1 To Len(strSource)
     strTmp = strTmp & ChrW(AscW(Mid(strSource, i, 1)) + 10)
    Next
    MsgBox strTmp
    For i = 1 To Len(strTmp)
     strTmp1 = strTmp1 & ChrW(AscW(Mid(strTmp, i, 1)) - 10)
    Next
    MsgBox strTmp1
    End Sub
      

  3.   

    strSource = "中国人 china 200000,./" & vbCrLf & ChrW(9632)
      

  4.   

    我是将所有字符按字处理,chr("汉")这样会得到”汉“对应的unicode编码。密钥是32位的,加密数据也是32位的,然后进行加密运算,比如XOR,得到的数,将其分成16位一组,A和B,用asc转换成对应的unicode字符,问题出在分成的A和B的编码很有可能对应的是windows无法显示的字符,那在结果中就会显示为空格,而解密时chr这些空格时不会是原来的数值而是别的,这样的话就无法还原了。。我该怎么做
      

  5.   

    strSource = "中国人 china 200000,./" & vbCrLf & ChrW(9632)
      

  6.   

    请问,vbCrlf是什么意思,vbCrlf&ChrW(9632)是何用
      

  7.   

    vbcrlf 换行  chrw(9632)是一个黑框框.
      

  8.   

    chrw(9632)应该是对特殊字符的测试吧.9632你随便变化试试.
      

  9.   

    > 得到的数,将其分成16位一组,A和B,用asc转换成对应的unicode字符,......密文不要转换成字符。可以用16进制字符串来显示和保存。
      

  10.   

    strSource = "中国人 china 200000,./" & vbCrLf & ChrW(9632)
    vbCrLf 是回车换行
     ChrW(9632)一个黑框框仅仅用来测试能否正常转换
    你应该注意到我用的是ascw和chrw代替asc和chr否则asc大于255就出错误
      

  11.   

    ch21st(风尘鸟) 的方法在处理汉字时是OK的,但我遇到了这样的符号"·",AscW("·")是183,
    +1后通过ChrW(184)得到的是"?"。在VB中,用TextStream对象存储时,VB报错,Run-time error'5',错误描述:Invalid procedure call or argument。请问这是为什么?