2
我views.py:的Python/Django的的UnicodeDecodeError 'ASCII' 编解码器不能解码
# -*- coding: UTF-8 -*-
def myview(request):
object = MyObject.objects.get(id = 1)
testvar = u"test %s" % object.myfield
而且我得到了错误:
UnicodeDecodeError at /myurl
'ascii' codec can't decode byte 0xc4 in position 1: ordinal not in range(128)
Unicode error hint
The string that could not be encoded/decoded was: J������
的J - MyField的价值 在数据库中,这个字段是utf8_bin。 在模型这一领域是CharField
sys.getfilesystemencoding() #- UTF-8
sys.getdefaultencoding() #- ascii
sys.getdefaultencoding() #- ascii
locale.getdefaultlocale() #- ('en_US', 'UTF-8')
locale.getlocale() #- (None, None)
的Python 2.7.6 Django的1.5.8
我也试过:
object.myfield.decode("utf8")
,并得到错误:
UnicodeEncodeError at /myurl
'ascii' codec can't encode characters in position 6-10: ordinal not in range(128)
我有这个对象的管理方 - 即使使用utf-8 sy,一切都很完美mbols。
如果我打印出object.myfield的类型,然后我得到:
<type 'str'>
我不知道你的问题的第一位,但最后Python会先对其进行编码(与ASCII编码解码器),所以:你在哪里得到一个“不能带* *代码”试图*德*代码的值发生在Python 2.x中,当您尝试解码unicode字符串位它可以尝试解码它。这对我说,你的领域已经是unicode,所以主要问题可能不在你向我们展示的行中,而是在其他地方尝试将unicode值编码为ascii。 – Duncan 2014-12-02 16:01:26
'myfield'是外键吗?如果是,你可以发布[__str __()和__unicode__()](https://docs.djangoproject.com/en/dev/ref/unicode/#choosing-between-str-and-unicode)相关的模式? – danihp 2014-12-02 17:25:19
邓肯,我的代码抛出第一个错误,直到解码()的一部分 - 在这部分“U”测试%的“%object.myfield” – user3564666 2014-12-02 20:58:16