настройка repoze.bfg для использования кодировки utf-8 - PullRequest
0 голосов
/ 24 мая 2011

Я использую repoze.bfg v1.3 и chameleon v2 (шаблоны zpt). У меня проблемы с кодировкой при рендеринге шаблона:

UnicodeDecodeError: кодек «ascii» не может декодировать байт 0xc5 в позиции 9: порядковый номер не в диапазоне (128)

Как я могу настроить repoze.bfg для использования кодировки utf-8 с хамелеоном?
Я добавил следующее в Конфигуратор:

 config.add_settings(encoding="UTF-8")
 config.add_settings(default_encoding="UTF-8")

И не помогло.

Ответы [ 2 ]

1 голос
/ 13 января 2012

Проблема в библиотеке translationstring, которая используется хамелеоном.Хотя хамелеон может быть настроен на использование другой кодировки, он передает данные, которые он получает, непосредственно в строку перевода.Строка перевода в конструкторе, где он пытается создать юникод из полученных данных.Ошибка возникает, когда данные являются байтовой последовательностью, отличной от ascii (str в python 2.x).

Решение состоит в том, чтобы всегда передавать unicode в строку перевода или обновлять саму библиотеку, используя следующую команду diff:

65c69
<        self = unicode.__new__(self, msgid)
--- patch
>       try:
>           self = unicode.__new__(self, msgid, "utf8")  # FIXED~
>       except Exception as e:
>           self = unicode.__new__(self,msgid)
0 голосов
/ 25 мая 2011

0xc5 равно Å с использованием латинского-1, python не может преобразовать его в utf-8, не зная исходную кодировку

, если эта строка происходит из формы cgi, убедитесь, что сервер устанавливает правильную кодировку

подсказка:

lynx -dump -mime_header http://url_of_the_page_with_the_form_to_compile|less

и найдите что-то вроде

Content-Type: text / html;charset = UTF-8

если кодировка не utf-8, ваша конфигурация неверна, может быть, apache переопределяет ваши настройки?

...