Ошибка Юникода Django Mezzanine

я получаю ошибку юникода при попытке URL-адреса, такого как www.mysite.com/blog/category/πρακτικα/ или www.mysite.com/blog/πρακτικα/

но я не получаю ошибку при попытке www.mysite.com/blog/tag/πρακτικα/

UnicodeEncodeError в /blog/category/πρακτικα/ 'latin-1' codec не может кодировать символы в> позиции 58-65: порядковый номер не в диапазоне (256) Исключение Местоположение: /home/vagrant/sullogos-venv/local/lib/ python2.7/site-packages/django/template/loaders/filesystem.py в load_template_source, строка 37

кажется, у него разное поведение в категориях и в тегах


person KleKoR    schedule 01.03.2013    source источник


Ответы (2)


Разница в том, что категории могут иметь собственный шаблон, а теги — нет. Таким образом, в случае категории имя шаблона ищется с использованием ярлыка категории - ошибка, которую вы получаете, связана с неправильно настроенной локалью, которая не поддерживает utf8.

person Stephen McDonald    schedule 03.03.2013
comment
Спасибо за Ваш ответ. Но я не понимаю, что мне нужно изменить, чтобы заставить его работать. - person KleKoR; 08.03.2013

Это проблема не Mezzanine или Django, а среды, используемой для их развертывания. См. эту проблему и эту документацию для получения более подробной информации. Для Python недостаточно поддерживать определенную локаль, но также необходимо, чтобы веб-сервер мог правильно обрабатывать файлы Unicode.

Как это исправить, будет зависеть от используемого веб-сервера. Например, если вы используете Apache, вам нужно установить LANG и LC_ALL в значения, совместимые с Unicode (по крайней мере, в системах *NIX вы должны найти их в /etc/apache2/envvars). Примером может быть:

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

Не стесняйтесь заменить код языка/страны на другой, более подходящий для ваших нужд (я использовал pt_BR вместо en_US, и у меня все работало нормально). Из сообщения об ошибке, которое вы видите, эти настройки в вашей системе, вероятно, используют ISO-Latin (ISO-8859-1) вместо UTF-8 (который, я полагаю, не может обрабатывать кириллицу).

Если вы используете другой веб-сервер, проверьте его документацию по локализации/интернационализации, чтобы узнать, что нужно изменить. Как я понял, важно предложить поддержку имен файлов в формате Unicode.

person mgibsonbr    schedule 07.11.2015