我正在使用 Twilio 通过短信向我的 python webapp 发送电子邮件地址。但是,当我尝试转换包含电子邮件地址的短信正文时,我得到了一个例外。
<type 'exceptions.UnicodeEncodeError'>, UnicodeEncodeError('ascii', u'myemail\xa1gmail.com', 13, 14, 'ordinal not in range(128)'), <traceback object at 0x10cca5f8>)
Traceback (most recent call last):
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.1/webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "/base/data/home/apps/s~tester-sandbox/1.360113171877023968/website/sms.py", line 22, in post
from_body = str(cgi.escape(self.request.get('Body', None))).strip()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' in position 13: ordinal not in range(128)
我知道这是一个编码错误,在电子邮件地址中的 @ 字符上绊倒了。在谷歌搜索这个问题后,我发现了一个建议
sys.setdefaultencoding( "latin-1" )
但这只是用 � 符号替换了 @.... 克服这个问题的最简单方法是什么?