2010-12-29 4 views
-1

フィールドのいずれかにUnicodeテキストを含む新しいレコードを保存しようとしています。間違っているとどのようにそれを修正するために何Django:ASCII以外のテキストを保存しようとするとUnicodeEncodeErrorが発生する

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 15: ordinal not in range(128) 

任意のアイデア:Djangoのシェルを使用している場合

Djangoの管理ページを使用するときにUnicodeテキストが成功したの保存、しかしで失敗しますか? ありがとう!

+0

問題は、モデルの__unicode__方法でほぼ確実です。あなたはそれとトレースバックを投稿するべきです。シルバーライトの場合は –

答えて

1

作業する文字列の前にuを入れてください。

print "ЙЦУКЕН"; #error! 
print u"ЙЦУКЕН"; #success! 
+0

+1。注意点 - Python 3では、すべての文字列はデフォルトでUnicodeです。しかし、Pythonの古いバージョンでは、Unicode文字列として文字列リテラルを明示的にマークする必要があります(Silver Lightが上に示したように)。 – invarbrass

+0

私は文字列を印刷していません、私はそのユニコード文字列をその列の中に持つdjangoモデルを保存しようとしています。 'u'はここで全く無関係です。 –

+0

@Gj:完全なトレースバックを投稿します。 –

2

これらの便利なdjangoビルドイン変換関数は、しばしば私のトリックです。私は特殊文字を使ってpdfsを生成するためにそれらを使用します。お使いのモデルに非ASCIIテキストを保存するための

utility conversion functions

from django.utils.encoding import smart_unicode 

mymodel.my_field = smart_unicode(myform.cleaned_data["my_non_ascii_text"]) 
mymodel.save() 
+3

Django 1.5以来、それは 'smart_text'に改名されました。 – Paolo

関連する問題