[Django/Python] 文字化けをなくす方法
僅差で nakagami さんに先を越されてしまったけど、半日悪戦苦闘したのを投げてしまうのもしょんぼりなので書いておく。
Django を Windows にインストールしてチュートリアルを進めると、いろいろ試してみましょうって書いてあるものだから日本語を使う人もいると思うんだ。わたしもその一人なんだけどね。でも、初期設定のままで日本語を使うと下のようにコンテンツが何も映らないか、文字化けするんだよね。

解決方法
Django は UTF-8 を使うことを前提に作られています。Python コードは Python ランタイムが解釈して実行するので文字コードが何であろうと関係ないのですが、htm ファイルは UTF-8 で保存しましょう。ただし、UTF-8 にもいくつか規格が存在します。ハズレだとやっぱりコンテンツが見えません。Peggy だと UTF-8 では NG で UTF-8N で保存する必要がありました。
それと、サイトの設定も必要です。サイトの設定は setting.py で行います。 setting.py に LANGUAGE_CODE という項目があります。デフォルトでは 'us-en' かなにか、日本以外が指定されています。これを 'ja' (← アルファベットは全部小文字。シングルクォーテーションで囲む ) に変更して保存しましょう。全ての設定が終われば↓のようにちゃんと見えるようになります。

- htm ファイルは UTF-8 で保存
- setting.py の LANGUAGE_CODE = 'ja'
- DB が MySQL とかの場合はそっちの設定もチェック
| 固定リンク
この記事へのコメントは終了しました。
コメント
たびたび失礼。
setting.py の LANGUAGE_CODE = 'ja' は、アプリケーションを日本語モードにするだけ(gettextでjaを利用するだけ)で文字化けとは関係ありません。
また、クライアントエンコーディングの設定で各メッセージ言語を切り替えることもできます。
#ちなみにjaの国際化ファイルは2005/12からあります
投稿: everes | 2006/10/12 23時11分
> LANGUAGE_CODE = 'ja' は、アプリケーションを日本語モードにするだけ
情報ありがとうございます。
最初の画像が UTF-8 で保存したものなのですが
タイトルバーなどの日本語は正常に表示されるものの
その下に表示されるはずの部分が全て見えなくなってしまうんですよね。
HTMLソースを表示させてみると、
ファイルそのものを読んでいないようでした。
Shift_JIS でも UTF-8N でも必要なファイルは
読み込んでくれるのになんで UTF-8 だけ
読み込んでくれないのか不思議でなりません。
投稿: Fomalhaut | 2006/10/13 10時13分
UTF-8でHTMLを保存すると、出力の際にBOMがそのままバイナリコードとして出力されるからだったと思います。
投稿: voluntas | 2006/10/14 03時10分
> 出力の際にBOMがそのままバイナリコードとして出力されるから
なるほど。
情報ありがとうございます。
投稿: Fomalhaut | 2006/10/14 21時34分