Python/Django UnicodeDecodeError';ascii';编解码器可以';破译
我得到了视图。py:Python/Django UnicodeDecodeError';ascii';编解码器可以';破译,python,django,encoding,utf-8,Python,Django,Encoding,Utf 8,我得到了视图。py: # -*- 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 ran
# -*- 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������
UnicodeEncodeError at /myurl
'ascii' codec can't encode characters in position 6-10: ordinal not in range(128)
J������ - myfield值
在数据库中,此字段是utf8\u 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")
并得到错误:
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������
UnicodeEncodeError at /myurl
'ascii' codec can't encode characters in position 6-10: ordinal not in range(128)
我有这个对象的管理方面——而且一切都很完美,即使使用utf-8符号
如果我打印出object.myfield的类型,那么我会得到:
<type 'str'>
试试这个
def myview(request):
object = MyObject.objects.get(id = 1)
testvar = u"test %s" % object.myfield.**decode('utf-8')**
我不知道你问题的第一点,但在Python2.x中,当你尝试解码unicode字符串时,你在解码值时得到的最后一点是“不能编码”:Python将首先对它进行编码(使用ascii编解码器),以便它可以尝试解码。对我来说,你的字段已经是unicode,所以主要的问题可能不在你给我们看的行中,而是在其他地方,当有人试图将unicode值编码为ascii时。
myfield
是外键吗?如果是,你能发布相关模型吗?Duncan,我的代码在decode()部分之前抛出第一个错误-在这部分中“u”测试%s“%object.myfield”danhip,不,这不是ForeignKey,只是charfield为了让这成为一个很好的答案,请解释一下它的作用