我在 Django Admin 站点上发生了一个奇怪的问题,我将 html 片段存储在文本字段中。
一旦我点击保存,该字段将变为:
这很好——HTML 无论如何都能正确呈现。真正的问题是当我再次点击保存时:
所有 HTML 实体都受此错误影响,包括
.
为什么会这样?
- 操作系统:亚马逊 Linux x64
- 蟒蛇:2.6
- 姜戈:1.4
- 数据库:MySQL 5.5
我在 Django Admin 站点上发生了一个奇怪的问题,我将 html 片段存储在文本字段中。
一旦我点击保存,该字段将变为:
这很好——HTML 无论如何都能正确呈现。真正的问题是当我再次点击保存时:
所有 HTML 实体都受此错误影响,包括
.
为什么会这样?
您的问题是 Django 将您的数据插入为,unicode
但您的 mysql 将其存储为latin_swedish
.
如果您不使用 South,只需使用DROP DATABASE foo;
. 然后使用重新创建它CREATE DATABASE foo CHARACTER SET UTF8;
并syncdb
再次运行。
或者,您可以通过执行以下操作转换现有数据库:
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE tablename CHARACTER SET utf8 COLLATE utf8_general_ci;
但是你必须手动为每个表应用它。尽管我认为可以仅将其应用于您遇到问题的表。
确保在执行此操作之前备份数据。