UnicodeEncodeError в приложении django - PullRequest
1 голос
/ 04 июня 2011

Я пытаюсь создать приложение, используя Django на webfaction. Я в основном возился с API Amazon, и когда у одного из результатов поиска есть символ товарного знака, который передается в мой шаблон ... выдается ошибка. Я получаю ошибку

Caught UnicodeEncodeError while rendering: 'ascii' codec can't encode character u'\u2122' in position 9: ordinal not in range(128)

и задавался вопросом, знает ли кто-нибудь, что это за исправление.

Ответы [ 2 ]

3 голосов
/ 04 июня 2011

Это, вероятно, означает, что вы вызываете str() для множества данных Unicode - функцию str можно вызвать ascii, чтобы лучше описать, что она делает!Ваши шаблоны будут полностью довольны данными Юникода, поэтому, учитывая, что вы используете Django, я подозреваю, что проблема в __unicode__ методе или в чем-то подобном.

Юникод - сложная тема, для Google есть python unicodeчтобы почувствовать это.

Хитрый, чтобы помочь вам в дальнейшем, не видя больше кода, но суть в том, чтобы попытаться использовать строки юникода во всем приложении!В Python есть метод unicode(), который работает точно так же, как метод str для простых строк, но будет работать и со строками Юникода - лучше использовать это.

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

Да, u'\u2122' - знак торговой марки.Где-то в вашем коде вы должны:

  • кодировать данные Unicode, используя кодек (utf8, cp1250 - cp1258 и т. Д.), Который поддерживает этот символ

или

  • избегая автоматического неожиданного декодирования (которое использует ascii, которое не поддерживает этот символ).

Какое действие необходимо и где?Понятия не имею, так как вы не предоставили трассировку ... пожалуйста отредактируйте ваш вопрос, включив в него полную трассировку, и отформатируйте его как код, чтобы он был разборчивым.

...