Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python/Django UnicodeDecodeError';ascii';编解码器可以';破译_Python_Django_Encoding_Utf 8 - Fatal编程技术网

Python/Django UnicodeDecodeError';ascii';编解码器可以';破译

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

我得到了视图。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 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为了让这成为一个很好的答案,请解释一下它的作用