2011-01-20 2 views
2

DjangoはデータベースをUTF-8でエンコードしたいと思われますが、レガシーシステムに必要なLATIN1でレガシーデータベースがエンコードされています。 Djangoのデータベースへの書き込み/読み込み時にUTF-8とLATIN1の間で変換するためにDjangoのdb-accessをフックすることは可能ですか?より良い解決策がありますか(dbを変換する必要はありません)?LATIN1でエンコードされたデータを持つ旧式のPostgresqlデータベースでDjangoを使用するにはどうすればよいですか?

答えて

0

SQLファイルをダンプし、iconvを使用してすべてをUTF-8に変換することをお勧めします。

は は

あなたは、私がUTF8にキリル文字(ロシア語)のLatin1のために使用されこれに似たものを使用することができます。

iconv -f utf-8 -t latin1 < in.sql | iconv -f cp1251 -t utf-8 > out.sql 
+0

確かに簡単でしょうが、これは "dbを変換する"と私は考えていますが、これは私の質問で言いましたが、従来のアプリケーションのためにはできません。 – psj

4

あなたのデータベース限り、UTF8にCLIENT_ENCODING設定した場合、PostgreSQLはあなたのためにそれを翻訳しますLATIN1にあります(SQLASCIIにはありません)。 djangoにSET client_encoding = 'UTF8'コマンドを送るか、postgresql.confのデフォルトを変更することができます。

関連する問題