2014-12-02 85 views
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'> 
+0

我不知道你的問題的第一位,但最後Python會先對其進行編碼(與ASCII編碼解碼器),所以:你在哪裏得到一個「不能帶* *代碼」試圖*德*代碼的值發生在Python 2.x中,當您嘗試解碼unicode字符串位它可以嘗試解碼它。這對我說,你的領域已經是unicode,所以主要問題可能不在你向我們展示的行中,而是在其他地方嘗試將unicode值編碼爲ascii。 – Duncan 2014-12-02 16:01:26

+0

'myfield'是外鍵嗎?如果是,你可以發佈[__str __()和__unicode__()](https://docs.djangoproject.com/en/dev/ref/unicode/#choosing-between-str-and-unicode)相關的模式? – danihp 2014-12-02 17:25:19

+0

鄧肯,我的代碼拋出第一個錯誤,直到解碼()的一部分 - 在這部分「U」測試%的「%object.myfield」 – user3564666 2014-12-02 20:58:16

回答

0

試試這個

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

爲了使這個偉大的回答,請解釋這是做什麼的 – 2017-02-09 08:36:46

相關問題