2

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

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

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

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

4

2 回答 2

0

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

于 2013-03-03T00:17:56.943 回答
0

这不是 Mezzanine 或 Django 的问题,而是用于部署它们的环境。有关更多详细信息,请参阅此问题此文档。Python 支持特定的语言环境是不够的,但 Web 服务器还必须能够正确处理 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 文件名的支持。

于 2015-11-07T17:11:58.260 回答