2011-06-03 1 views
1

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

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

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

+2

Нам нужно сначала увидеть трассировку и некоторый код. –

ответ

3

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

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

Tricky, чтобы помочь вам, не видя еще какого-либо кода, но суть заключается в том, чтобы попытаться использовать строки Unicode через ваше приложение! У Python есть метод unicode(), который работает точно так же, как метод str для простых строк, но отлично работает и с строками unicode - лучше использовать его.

1

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

  • процесс кодирования данных Юникода с помощью кодека (utf8, CP1250 в cp1258, и т.д.), который поддерживает этот символ

или

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^