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