Что может вызвать исключение UnicodeEncodeError в рабочую среду Python? - PullRequest
2 голосов
/ 06 июня 2011

В моем сценарии есть метод, который извлекает канал RSS в Твиттере, анализирует его с FeedPharser, оборачивает его в TwiML (с использованием Twilio XML) с помощью модуля twilio и возвращает полученный ответ в методе CherryPy через str (),Это отлично работает в среде разработки (Kubuntu 10.10);У меня были смешанные результаты на моем сервере (Ubuntu Server 10.10 на Linode).

В первые несколько месяцев все было хорошо.Затем описанный выше метод начал давать сбой, например:

UnicodeEncodeError: кодек 'ascii' не может кодировать символ u '\ u2019' в позиции 259: порядковый номер не находится в диапазоне (128)

Но, когда я запускаю точно такой же код на том же канале, с той же версией Python, на той же ОС, на моем компьютере для разработки, код выполняется нормально.Тем не менее, я должен отметить, что даже когда он работает правильно, некоторые символы выводятся неправильно.Например:

вместо

'

Чтобы устранить эту аномалию,Я просто перестроил свой VPS с нуля, который работал еще несколько месяцев, а затем снова возникла ошибка.

Сервер автоматически устанавливает обновленные пакеты Ubuntu, как и мой блок разработки.Я не могу думать ни о чем, что могло бы вызвать это.Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 06 июня 2011

Данные 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 голосов
/ 08 июня 2011

Несколько перезагрузок позже (по несвязанным причинам) и снова работает. Как странно ....

...