Django:尝试保存非ascii文本时的UnicodeEncodeError

时间:2010-12-29 11:12:23

标签: django unicode

我正在尝试在其中一个字段中保存带有一些unicode文本的新记录。

使用django管理页面时保存unicode文本成功,但使用django shell时失败:

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

任何想法有什么问题以及如何解决? 谢谢!

2 个答案:

答案 0 :(得分:2)

这些方便的django内置转换功能通常对我有用。我用它们来生成带有特殊字符的pdf文件。

utility conversion functions

用于在模型中保存非ascii文本:

from django.utils.encoding import smart_unicode

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

答案 1 :(得分:1)

尝试将u放在您正在使用的字符串之前。

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