【问题标题】:Django Mezzanine Unicode ErrorDjango 夹层 Unicode 错误
【发布时间】:2013-02-16 06:20:01
【问题描述】:

我在尝试使用 www.mysite.com/blog/category/πρακτικα/ 或 www.mysite.com/blog/πρακτικα/ 之类的网址时遇到 unicode 错误

但我在尝试 www.mysite.com/blog/tag/πρακτικα/ 时没有收到错误消息

UnicodeEncodeError at /blog/category/πρακτικα/ 'latin-1' 编解码器无法对 >position 58-65 中的字符进行编码:序数不在范围内(256) 异常位置:/home/vagrant/sullogos-venv/local/lib/python2.7/site-packages/django/template/loaders/filesystem.py in load_template_source, line 37

似乎它在类别和标签上有不同的行为

【问题讨论】:

    标签: django unicode mezzanine


    【解决方案1】:

    这不是 Mezzanine 或 Django 的问题,而是用于部署它们的环境。有关详细信息,请参阅 this issuethis documentation。 Python 支持特定的语言环境是不够的,但网络服务器还必须能够正确处理 Unicode 文件。

    如何修复它取决于所使用的网络服务器。例如,如果您使用的是 Apache,则需要将 LANGLC_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 文件名的支持。

    【讨论】:

      【解决方案2】:

      不同之处在于类别可以有自定义模板,而标签则不能。因此,在类别情况下,使用类别 slug 搜索模板名称 - 您得到的错误是由于不支持 utf8 的区域设置不正确。

      【讨论】:

      • 感谢您的回答。但我不明白我必须改变什么才能让它发挥作用。
      猜你喜欢
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2013-08-30
      • 2015-01-26
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      相关资源
      最近更新 更多