将Twilio sms正文转换为字符串 - @符号的编码错误

问题描述:

我使用Twilio通过短信向我的python webapp发送电子邮件地址。但是,当我尝试转换包含电子邮件地址的短信主体时,我收到一个异常。将Twilio sms正文转换为字符串 - @符号的编码错误

<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") 

的建议,但简单地取代了@有标志....什么是克服这种最简单的方法是什么?

+0

你尝试使用UTF-8编码发送短信吗? – 2012-07-06 12:58:45

+0

我尝试了几种不同的编码,但在联系Twilio时发现它实际上并不是一个python问题 - 回答如下。 – user714852 2012-07-07 09:41:07

我联系Twilio来到这个底部,事实证明这不是一个python问题。当用户发送他们的电子邮件地址(通过短信)它发送一个¡字符(而不是@),这不幸的是非ascii - 因此是例外。

从Twilio:

一些运营商还没有作出修订,使正确的格式,以 在发给他们的网络短信被保存,所以你会看到的@符号 腐败所处理的短信一些运营商。

一个潜在的问题是在您的 Twilio帐户中启用Unicode字符编码。一个潜在的缺点,这是你会被 局限于发送是70个字符或更少的 长度

+0

你有英国号码吗?如果是这样,请再试一次:) – Chad 2012-07-12 01:52:08