我使用现有的 MySQL 数据库创建了一个 django 应用程序,问题是数据库的编码是 latin1_general_c 并且 utf8 字符保存如下 ñ => ñ
, ó => ñ
,我需要以正确的形式在该页面中呈现信息,但 django 像这样显示数据库信息
recepción, 4 oficinas, 2 baños
i need show like this
recepcíon, 4 oficinas, 2 baños
由于多种原因,我无法将数据库更改为 utf8
如何才能正确显示信息?
最佳答案
Django 似乎 explicitly require您的数据库使用 UTF-8:
Django assumes that all databases use UTF-8 encoding. Using other encodings may result in unexpected behavior.
也就是说,应该可以使用自定义 OPTIONS
设置将所需的字符集传递给数据库驱动程序。请参阅this answer ,其中设置 charset
解决了问题。但是您应该检查您正在使用的特定 MySQL 驱动程序和数据库的文档,因为 Django 本身不使用这些选项。
正如上面引用所建议的,即使这可以在数据库和 unicode 之间正确转换字符串,Django 的某些部分仍然无法正常工作。例如,要正确验证 CharField
的长度,Django 必须知道编码,并且它始终采用 UTF-8
。
关于Django 字符 latin1 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28523138/