Django 字符 latin1 mysql

Django character latin1 mysql

我用现有的 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 setting to pass the desired character set to the database driver. See this answer,其中设置 charset 解决了问题。但是您应该查看您正在使用的特定 MySQL 驱动程序和数据库的文档,因为 Django 本身不使用这些选项。

正如上面的引述所建议的,即使这可以在数据库和 unicode 之间正确转换字符串,Django 的某些部分仍然无法正常工作。例如,要正确验证 CharField 的长度,Django 必须知道编码,并且它总是假设 UTF-8.