2012-12-05 24 views
1

我们有一个VB6程序来加密一组字符ente在西方的Win OS计算机上,加密的字符串解密成功。但在日本电脑上,它不起作用,并被解码为一堆????。输入和输出(解码)文本框都设置为MS UI哥特式日语脚本。部分代码如下。样本输入也给出。MS Crypto API不会加密/解密日文字符

输入/输出:代码

inputStr = 機帰帰 
outputStr= 0Y365H 
finalStr= ??? 

部分:

Private Const IC_CONST_INST_KEY_ENCRYPT_STR = "41S81U4AYYPGZDNXKWMPGK0PMDS" 
Private Sub cmdEncrypt_Click() 
Dim inputStr As String 
Dim outputStr As String 
Dim finalStr As String 
Dim sUnicodeValue, sAsciiValue 

    inputStr = txtUInit.Text 

    outputStr = EncryptString(inputStr, IC_CONST_INST_KEY_ENCRYPT_STR) 
    txtUEncrypt.Text = outputStr 

    finalStr = DecryptString(outputStr, IC_CONST_INST_KEY_ENCRYPT_STR) 
    txtUDecrypt.Text = finalStr 

End Sub 
+1

这里没有加密代码,没有任何内容显示字节如何转换为字符并再次返回 - 总之,您已经显示了最有可能包含该问题的代码。 –

+4

问题是如何将字符转换为字节。如果你使用UTF-8或UTF-16是应该工作的。如果你使用ASCII,它显然会失败。 – CodesInChaos

+0

谢谢CodesInChaos。这就是我所需要的。找到必要的代码来完成转换后,它就像一个魅力。 – user1046647

回答

1

VB6不能正确Unicode的日文字符处理,则需要从Unicode转换正在运行的加密前为ASCII程序。

+0

它可以,它内部使用unicode。但是,它会在与声明函数和大多数本机文件I/O接口的边缘进行代码页转换。本地用户界面控件也不支持unicode,但会处理本地代码页中的任何内容。 – Deanna