【问题标题】:converting Twilio sms body to a string - encoding error for @ symbol将 Twilio 短信正文转换为字符串 - @ 符号的编码错误
【发布时间】:2012-07-05 22:35:20
【问题描述】:

我正在使用 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" )

但这只是用 � 符号替换了 @.... 解决这个问题的最简单方法是什么?

【问题讨论】:

  • 您是否尝试过使用 utf-8 编码?
  • 我尝试了几种不同的编码,但在联系 Twilio 时发现这实际上不是 python 问题 - 答案贴在下面。

标签: python google-app-engine python-2.7 twilio


【解决方案1】:

我联系了 Twilio 以了解详情,结果证明这不是 python 问题。当用户发送他们的电子邮件地址(通过短信)时,它会发送一个 ¡ 字符(而不是 @),不幸的是它不是 ascii - 因此是例外。

来自 Twilio:

一些运营商尚未进行修复以允许正确的格式 保存在通过其网络发送的 SMS 消息中,因此您将看到 某些运营商处理的 SMS 中的 @ 符号损坏。

一个可能的解决方法是在您的 Twilio 帐户。一个潜在的缺点是你会 仅限发送 70 个字符或更少的 SMS 消息 长度

【讨论】:

  • 你有英国号码吗?如果是这样,请再试一次:)
猜你喜欢
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
相关资源
最近更新 更多