Django 字符 latin1 mysql

标签 django character-encoding latin1

我使用现有的 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/

相关文章:

python - 扩展 get_object_or_404 以使用 select_related

python - Django:如果用户没有注销,我如何检查用户的最后事件时间?

django - Django 中的 Unicode 应用程序名称

c# - 获取写入文件时字符串占用的大小(以字节为单位)?

python - 为什么 Apache 不使用 Django 和 mod_wsgi 显示 404 错误?

python - 包含 Django 应用程序的 url.py 会导致 404

python - 更多 pythonic 在处理 urllib 响应时将字节转换为字符串而不是 chr(int(x))

Python 和字符串重音符号

mysql - 将 MySQL 表从 Latin1 转换为 UTF8 时整理丢失的信息

mysql - 无法获取正确的值以使用 JDBC for MySQL 从 latin1 字段查询中文值