2009-06-30 21 views
5

djangoテンプレートにフランス語の文字(é、è、à...)がありますが、djangoによって読み込まれるとUnicodeDecodeError例外が発生します。djangoテンプレートでフランス語の文字を使用する方法は?

私はテンプレートをロードせず、直接Python文字列を使用します。それは大丈夫です。

DjangoテンプレートでUnicodeを使用するには何かする必要がありますか?

答えて

7

latin-1などの非Unicodeエンコーディングでテンプレートを保存している可能性があります。私はDjangoがデフォルトでテンプレートがUTF-8であると仮定していると信じています(これを上書きする設定があります)。

あなたのエディタは、テンプレートファイルをUTF-8エンコーディングで保存することができます(おそらく、エディタに依存するかもしれませんが、Save Asページのドロップダウンを使用している可能性があります)。ファイルをUTF-8として保存し直すと、エラーは消えてしまいます。

+2

Pedantification:Latin-1はUTF-8よりも" none-unicode "ではなく、両方ともUnicodeではなくUnicodeのすべてのUnicode文字をエンコードすることができます。あなたの答えの妥当性を変えるものではありません、私はちょうど特別な理由のために賢明ではありません;) –

+0

私は賢明であるためにすべてですが、私は " UTF-8は実際にはUnicodeデータのエンコーディング(いくつかのうちの1つ)ですが、latin-1は可能なすべてのUnicodeコードポイントを表すことができないため、UTF-8は実際にはエンコーディングです(いくつかのうちの1つ)。 – Brian

+0

IDEは私のファイルを 'UTF-8 'として表示し、Notepad ++で同じファイルを開いた後にしか'実際にはBOMなしのUTF-8だったのですが、それをプレーンな 'UTF-8'として保存しました。 – darren

3

これはあなたの問題に関連Django unicode documentationからです:

「しかし、一般的なケースでは、ファイルシステムからテンプレートを読み取ることで、これはわずかな合併症を作成します:いないすべてのファイルシステムは、UTF-8としてエンコードにデータを格納します。テンプレートファイルがUTF-8エンコーディングで保存されていない場合は、FILE_CHARSETの設定をディスク上のファイルのエンコーディングに設定します。Djangoがテンプレートファイルを読み込むと、このエンコーディングのデータをUnicodeに変換します(FILE_CHARSETが設定されます)。デフォルトでは 'utf-8'に設定されています)

DEFAULT_CHARSETの設定では、レンダリングされたテンプレートのエンコードが制御されます。これはUTF-8 bに設定されていますyデフォルト。 "

関連する問題