2012-07-05 38 views
2

我使用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

回答

2

我聯繫Twilio來到這個底部,事實證明這不是一個python問題。當用戶發送他們的電子郵件地址(通過短信)它發送一個¡字符(而不是@),這不幸的是非ascii - 因此是例外。

從Twilio:

一些運營商還沒有作出修訂,使正確的格式,以 在發給他們的網絡短信被保存,所以你會看到的@符號 腐敗所處理的短信一些運營商。

一個潛在的問題是在您的 Twilio帳戶中啓用Unicode字符編碼。一個潛在的缺點,這是你會被 侷限於發送是70個字符或更少的 長度

+0

你有英國號碼嗎?如果是這樣,請再試一次:) – Chad 2012-07-12 01:52:08