2

我在遗留 MySQL 数据库之上设置了一个 django-admin。

数据库声明它是 latin-1 编码的。数据库中输入的一些数据确实是 latin-1,但有些实际上是 UTF-8。这显示为损坏的字符,例如: é € ä ö

遗留应用程序做了一些黑魔法来隐藏这些错误,我无法修改数据库。

我找到了一个 Python 库ftfy,可以将 latin-1 损坏的 UTF-8 转换为真正的 UTF-8,例如上面的字符被翻译为“é € ä ö”。我想在从数据库加载的所有数据django.db.models.CharField上使用它。django.db.models.TextField怎么做?

我试图子类化django.db.models.CharFielddjango.db.models.TextField但不知道从哪里截取数据库中的数据。最佳解决方案类似于FTFYCharField始终纠正从数据库中获取的数据。

4

2 回答 2

1

我知道这可能是关闭...但也许可以防止一些头痛

在您进行任何与“unicode”相关的更改之前,请先了解 unicode 的含义,并注意您所写的“ö”==ö 仅在 unicode 由 UTF-8 方法编码时才是正确的

于 2013-02-08T21:53:30.597 回答
1

假设只读,我认为您正在寻找的是编写自定义模型字段。特别是,请查看将数据库值转换为 Python 对象部分。在该.to_python()方法中,您可以对从数据库读取的任何/所有字段执行任何操作。

如果您还需要编写(并保持怪异),请参阅保存前预处理值部分。

于 2012-12-17T02:11:23.600 回答