2012-12-05 26 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