リビジョン 4723 までは、django/db/backends/mysql/base.py の中で、下記よ
うに接
続のキャラクタセットの設定が行われていたのですが、リビジョン 4724 で無く
なって
しまっているようです。無くなった理由をご存じの方はいらっしゃらないでしょ
うか?
if self.connection.get_server_info() >= '4.1':
cursor.execute("SET NAMES 'utf8'")
キャラクタセットの設定が無くなったために、データベースに格納されるデータ
が文字
化けするようになっています。
リビジョン 4724 以降に django で INSERT したデータに関しては、django で
扱う限
りは文字化けは起こらないのですが、リビジョン 4723 以前に INSERT を行った
データ
は、djangoでは、文字化けが起こるようになっています。
設定が悪いようでしたら、正しい設定を教えていただけると有り難いです。
4724で以下の設定に変わったようです(動作未確認)。
DATABASE_OPTIONS = dict(charset="utf8")
詳しくは該当チケットを参照してください。
http://code.djangoproject.com/ticket/2635
この辺も重要ですね。
http://michilu.com/django/doc-ja/databases/
07/03/18 に Masahiro Yamagishi<ficti...@gmail.com> さんは書きました:
ポインタありがとうございます。
> DATABASE_OPTIONS = dict(charset="utf8")
で上手くいきそうだったのですが、
・MySQLdb 1.2.1がデフォルトのcharacter-setがcharsetと同じだとSET NAMESしない
・SET NAMESを必ず実行しないと文字化けする(原因不明PHPなどでも発生)
・デフォルトのcharacter-setは、utf8に指定してある
上の三つの事が重なって上手くいかなかったので、
DATABASE_OPTIONS = dict(init_command="SET NAMES 'utf8'")
を設定したら、以前と同じように文字化けしなくなりました =)