2011-06-06 23 views
2

我的腳本中有一個方法,它使用twilio模塊將Twitter RSS源解析爲FeedPharser,並將其封裝在TwiML(Twilio-flavored XML)中,並通過str()方法返回CherryPy方法中的響應。這在我的開發環境中工作得很好(Kubuntu 10.10);我的服務器上有不同的結果(Linode上的Ubuntu Server 10.10)。什麼可能導致UnicodeEncodeError異常蔓延到可用的Python環境中?

前幾個月,一切都很好。然後,上述方法開始失敗的東西,如:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 259: ordinal not in range(128)

但是,當我運行在相同的飼料完全相同的代碼,用相同的Python版本,在相同的操作系統,在我的開發,代碼執行得很好。但是,我應該注意,即使它正常工作,一些字符也不會輸出正確。例如:

’

而不是

'

爲了解決這一異常,我只是重建從頭開始我的VPS,這工作了幾個月,然後錯誤回來。

服務器自動安裝更新的Ubuntu軟件包,但我的開發框也是如此。我想不出任何可能導致這種情況的事情。任何幫助表示讚賞。

+0

我會首先檢查2臺機器上的區域設置。 – geoffspear 2011-06-06 00:53:30

+0

我該怎麼做呢? – 2011-06-06 00:56:52

+0

究竟哪個部分失敗?調用'str()'?更完整的回溯會幫助很多(可能會更改文件名以保護無辜者)。 – fumanchu 2011-06-06 17:47:44

回答

0

A f之後重新啓動(出於不相關的原因)並且它再次運行。有多奇怪....

1

XML數據不能包含某些字符。一個簡單的解決方法是將數據封裝在XML標籤中,這些標籤給CDATA提供了錯誤。例如:

<xmltag><![CDATA[Your content]]></xmltag> 

或者你可以用數值的參考值前&amp;查找有關此&

的更多信息,請訪問:

http://en.wikipedia.org/wiki/XML#Characters_and_escaping http://en.wikipedia.org/wiki/Numeric_character_reference http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references http://en.wikipedia.org/wiki/CDATA

+0

這似乎是一個Python編碼錯誤,而不是XML。 – 2011-06-06 00:56:06

+0

你試過Str.encode('utf8')嗎? – 2011-06-06 01:08:03

+0

http://www.saltycrane.com/blog/2008/11/python-unicodeencodeerror-ascii-codec-cant-encode-character/有一些似乎適用於其他人的解決方案 – 2011-06-06 01:18:55

相關問題