従来のMySQLデータベースの上にdjango-adminを設定しています。
データベースは、latin-1でエンコードされていることを宣言します。データベースに入力されたデータの一部は実際にはlatin-1ですが、実際にはUTF-8です。これは、次のような破損した文字として表示されます:é€äö
レガシーアプリケーションはこれらのエラーを隠すためにいくつかの黒魔術を行い、データベースを変更できません。
latin-1で破損したUTF-8を実際のUTF-8に変換できるPythonライブラリを見つけましたftfy
。たとえば、上記の文字は「é€äö」に変換されます。データベースからロードするすべてdjango.db.models.CharField
のデータに使用したい。django.db.models.TextField
どうやってするの?
サブクラスdjango.db.models.CharField
化しようとしdjango.db.models.TextField
ましたが、データベースからのデータをインターセプトする場所がわかりませんでした。FTFYCharField
最適なソリューションは、データベースから取得したデータを常に修正するようなものです。