テキストフィールド内にhtmlのフラグメントを保存するDjango Adminサイトで奇妙な問題が発生しています。
保存すると、フィールドは次のようになります。
いずれにせよ、HTML は正しくレンダリングされます。本当の問題は、もう一度保存を押したときです。
を含むすべての HTML エンティティがこのバグの影響を受けます
。
なぜこうなった?
- OS: アマゾン Linux x64
- パイソン: 2.6
- ジャンゴ: 1.4
- データベース: MySQL 5.5
テキストフィールド内にhtmlのフラグメントを保存するDjango Adminサイトで奇妙な問題が発生しています。
保存すると、フィールドは次のようになります。
いずれにせよ、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;
ただし、各テーブルに手動で適用する必要があります。問題が発生しているテーブルにのみ適用することは可能だと思いますが。
実行する前に、必ずデータをバックアップしてください。