2011-10-26 10 views
1

メンバーシップモデルの標準のcharフィールドを使用して構築されたDjangoのフラッシュメッセージがあります。DjangoメッセージフレームワークのUnicode

messages.add_message(request, 
        messages.INFO, 
        '{0} membership created'.format(membership.name)) 

memberships.name私はUnicodeEncodeErrorを取得した場合にUnicode文字が含まれていない限り、これはうまく動作します。これを修正するには、uという文字列をUnicode文字列の前につけることで問題を解決できますが、これはなぜ必要なのでしょうか?docs状態では、Djangoはすべてのバイト列がUTF-8であると見なします。私は私のアプリケーションを通過し、すべての文字列をUnicode文字列に変更する必要がありますか?

答えて

1

これはDjangoでは実際問題ではありません。それはあなたが道str.formatにバグが見破られているように見える一つの回避策は、別の%フォーマットを使用することであるUnicode文字列を、使用することですPython Issue 7300

、Unicodeの引数を処理します。

'%s membership created' % membership.name 
u'{0} membership created'.format(membership.name)) 
+0

あなたが正しいと思われます。ありがとう! –

0

はい。 ファイルから読み込まれたため実際にはバイト列であるものを除きます。

+0

または、「from __future__ import unicode_literals」を試してください。もちろん、誰もが読むべきUnicodeに関するSpolskysの記事を読んでください。 – jensq

+0

私は過去にSpolskyの記事を読んだことがありますが、いつもリフレッシュする価値があります。 –

関連する問題