Skip to main content
 首页 » 编程设计

Python/Django UnicodeDecodeError 'ascii' 编解码器无法解码

2025年05月04日39rubylouvre

我得到了 views.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������ 

J������ - 我的字段值 在数据库中这个字段是 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 符号也是如此。

如果我打印出 object.myfield 的类型,那么我会得到:

<type 'str'> 

请您参考如下方法:

试试这个

def myview(request): 
    object = MyObject.objects.get(id = 1) 
    testvar = u"test %s" % object.myfield.**decode('utf-8')**