Возврат строки юникода из python через ajax - PullRequest
0 голосов
/ 08 апреля 2010

У меня есть небольшое веб-приложение, которое запускает Python на стороне сервера и javascript (jQuery) на стороне клиента. Теперь по определенному запросу мой скрипт Python возвращает строку в юникоде, и клиент должен поместить эту строку в div в браузере. Однако я получаю ошибку кодирования Unicode от Python.

Если я запускаю сценарий из оболочки (bash на Debian Linux), сценарий работает нормально и печатает строку Unicode.

Есть идеи?

Спасибо!

EDIT

Это оператор печати, который вызывает ошибку:

print u'öäü°'

Это сообщение об ошибке, которое я получаю: UnicodeEncodeError: кодек «ascii» не может кодировать символы в позиции 34-36: порядковый номер не в диапазоне (128)

Однако я получаю это сообщение только при вызове скрипта через ajax ($ ('# somediv'). Load ('myscript.py');)

Спасибо!

1 Ответ

3 голосов
/ 08 апреля 2010

Если интерпретатор python не может определить кодировку sys.stdout, ascii используется как запасной вариант, однако символы в строке не являются частью ascii, поэтому возникает исключение UnicodeEncodeError.

Решением было бы закодировать строку самостоятельно, используя что-то вроде .encode(sys.stdout.encoding or "utf-8"). Таким образом, utf-8 используется как запасной вариант вместо ascii.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...