Cha*_*had 2 python google-app-engine
我正在尝试将加密的查询字符串传递给另一个URL.
以下代码给出了这个错误:
UnicodeEncodeError:'ascii'编解码器无法对位置7中的字符u'\ u04b7'进行编码:序数不在范围内(128)
加密模块是PyCrypto
在App Engine上运行Python 2.5.2
import Crypto
from Crypto.Cipher import ARC4
obj=ARC4.new('stackoverflow')
msg = 'This is my secret msg'
encrypted = obj.encrypt(msg);
self.redirect('/pageb?' + urllib.urlencode({'q': encrypted}))
Run Code Online (Sandbox Code Playgroud)
import Crypto
from Crypto.Cipher import ARC4
encrypted = self.request.get('q')
obj=ARC4.new('stackoverflow')
decrypted = obj.decrypt(encrypted)
get_data = cgi.parse_qs(decrypted)
self.response.out.write(decrypted)
self.response.out.write(pprint.pprint(get_data))
Run Code Online (Sandbox Code Playgroud)
追溯
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\_webapp25.py", line 701, in __call__
handler.get(*groups)
File "C:\Program Files\Google\google_appengine\demos\guestbook\guestbook.py", line 47, in get
decrypted = obj.decrypt(encrypted)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u04b7' in position 7: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
一般准则:在加密的东西中添加base64编码/解码步骤.
import base64
base64_encrypted_message = base64.b64encode(encrypted_message)
// send your message via POST as GET can be seen on system logs
encrypted_message = base64.b64decode(base64_encrypted_message)
// decrypt your message
Run Code Online (Sandbox Code Playgroud)
对于其他错误,请尝试阅读非ascii字符的unicode和utf-8编码.在将其传递给de/encrypt函数之前,您需要执行此步骤.
| 归档时间: |
|
| 查看次数: |
2329 次 |
| 最近记录: |