2

Twilio を使用して SMS で Python Web アプリケーションにメール アドレスを送信しています。ただし、メール アドレスを含む 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" )

しかし、これは単に @ を � 記号に置き換えただけです.... これを克服する最も簡単な方法は何ですか?

4

1 に答える 1

2

私はこれの根底に到達するためにTwilioに連絡しましたが、Pythonの問題ではないことがわかりました。ユーザーが自分の電子メールアドレスを(SMSで)送信すると、残念ながら非ASCII文字である¡文字(@の代わりに)が送信されます。したがって、例外です。

Twilioから:

一部の通信事業者は、ネットワーク経由で送信されるSMSメッセージで適切なフォーマットを保持できるように修正していないため、一部の通信事業者が処理するSMSの@記号が破損していることがわかります。

考えられる修正の1つは、TwilioアカウントでUnicode文字エンコードを有効にすることです。これの潜在的な欠点は、長さが70文字以下のSMSメッセージの送信に制限されることです。

于 2012-07-07T09:38:43.297 に答える