django - 在 Linux 中使用特殊字符时 Django Admin 出现 UnicodeDecode 错误(使用 postgresql)

标签 django postgresql unicode utf-8

我在 Windows 下为我的应用程序使用 psql/django 堆栈已经有一段时间了,完全没有任何问题。

但是,最近我换了一个linux box,很多地方开始崩溃了。作为一名讲西类牙语的人,我的应用程序使用了很多特殊字符,如“á”或“ñ”。当然,我决定我的数据库和 default_encoding 应该是 UTF-8 以避免任何有趣的问题。

尽管如此,即使应用程序在显示具有特殊字符的对象时没有问题,管理员也开始遇到很多问题。每当获取显示名称具有特殊字符的元素时,我都会得到一个可怕的消息:

UnicodeDecodeError at /ajax_select/ajax_lookup/images
'ascii' codec can't decode byte 0xc3 in position 35: ordinal not in range(128)

本质上,Django 试图获取这些元素的 unicode(),但不幸地失败了。我可能遗漏了一些东西,因为它在我的 Windows 框中没有这样的问题,所以,本质上:

  1. PostgreSQL 数据库编码在两个地方都是 UTF-8(字符类型和排序规则不完全相同,但我认为这不会有任何区别:English_United States.1252 vs. en_US.UTF-8

  2. Apache 不是罪魁祸首(我也不知道怎么可能),因为 django 开发服务器也会发生这种情况。

  3. Django 默认为 UTF-8,这是真的,因为正如我所说,我可以在应用程序的其他地方完美地看到特殊字符,它只是在管理员的一些特定场景中失败。

我已经想不出应该是什么了,由于错误存在于 django 管理代码中,因此很难调试,但大多数情况下它会在 str()unicode() 函数。

问题的核心是:在windows中str('árbol') = 'árbol'。在 Linux 中 str('árbol') 崩溃。

如有任何想法,我们将不胜感激。

最佳答案

如果从命令行运行 locale,输出是什么?我怀疑它没有设置为 UTF-8。

关于django - 在 Linux 中使用特殊字符时 Django Admin 出现 UnicodeDecode 错误(使用 postgresql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6436102/

相关文章:

c++无法输出unicode字符,即使我可以直接编写它们

python - Django 1.6 : How to ignore a fixture in python manage. py 加载数据?

django - 我应该为大型文本文件选择哪个数据库

c - 希腊字符转换

java - 当 NULL LocalDate 作为输入给出时, native 命名查询失败并出现异常 "column is of type date but expression is of type bytea"

SQL - 将一行转置为两列

c# - 如何通过 Unicode 值对 Web.Config 中的字符进行编码

Python 创建唯一的哈希/加密 url

jquery - 具有多个表格的可滚动 div

django - 在django-rest-framework中捕获参数