我在一个遗留的MySQL数据库上设置了一个django-admin。
数据库声明它是拉丁文-1编码的。数据库中输入的数据有些确实是拉丁文-1,但有些实际上是UTF-8。这会显示为损坏的字符,如:
遗留应用程序使用了一些魔法来隐藏这些错误,并且我不能修改数据库。
我找到了一个Python库ftfy,它可以将拉丁语-1损坏的UTF-8转换成真正的UTF-8,例如,上面的字符被翻译成"érealäö“。我想在所有从数据库加载的django.db.models.CharField和django.db.models.TextField数据上使用它。该怎么做呢?
我尝试对django.db.models.CharField和django.db.models.TextField进行子类化,但是不知道从哪里截取数据库中的数据。最好的解决方案是像FTFYCharField这样的东西,它总是纠正从数据库中获得的数据。
发布于 2012-12-17 10:11:24
假设是只读的,我想你要找的是Writing custom model fields。特别是,请查看Converting database values to Python objects一节。在.to_python()方法中,您可以对从DB读取的任意/所有字段执行任何操作。
如果您还需要编写(并保持怪异),请参阅Preprocessing values before saving上的小节。
发布于 2013-02-09 05:53:31
我知道这可能是关机了。但也许能预防一些头痛
在进行任何与" unicode“相关的更改之前,请先了解unicode的含义,并注意,只有当unicode由方法UTF-8编码时,您才能正确地写出==ö。
https://stackoverflow.com/questions/13907359
复制相似问题