我使用Python M2Crypto的RSA和PKCS1填充對外部網站API使用的電子郵件進行編碼。使用unicode時,編碼的電子郵件不會返回API的結果,但是當我使用str(unicode_email)時,我收到了正確的信息。M2Crypto RSA Unicode字符串編碼不同於字節字符串
我的印象是,在這種情況下,字符串的unicode和byte表示都應該起作用。有誰知道unicode爲什麼失敗?
代碼以供參考:
from M2Crypto import RSA
email = u'[email protected]' #fails
email = str(email) # succeeds
rsa = RSA.load_pub_key('rsa_pubkey.pem')
result = rsa.public_encrypt(email, RSA.pkcs1_padding).encode('base64')
字符通常是1個字節寬.... unicode通常是2個字節寬...(至少afaik ...(操作系統特定?)),我很確定它期待1字節寬字符 –
@JoranBeasley請閱讀[絕對最低限度的每個軟件開發人員,肯定必須知道Unicode和字符集(無藉口!)](http://www.joelonsoftware.com/articles/Unicode.html)。 Unicode不是一種字符編碼,並且不涉及字節,但事實上,您不能將所有unicode代碼點放入16位,因爲其中有2^16個以上。 – delnan
@delnan謝謝...收藏後閱讀..但是是的好吧點承認:) –