UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 104: ordinal not in range(128)
我使用intgereproparty
,stringproparty
,datetimeproparty
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 104: ordinal not in range(128)
我使用intgereproparty
,stringproparty
,datetimeproparty
這是因爲0xb0
(十進制176)是不是在ASCII有效的字符代碼(這間僅定義值0和127)。
檢查你從哪裏得到該字符串,並使用正確的編碼。
如果您需要更多幫助,請發佈代碼。
您試圖將Unicode數據(可能帶有重音的文本)放入ASCII字符串中。
您可以使用Python的編解碼器模塊打開一個UTF-8編碼的文本文件,並將Unicode數據寫入它。
的.encode
方法還可以幫助(u"õ".encode('utf-8')
例如)
的Python默認爲ASCII編碼 - 如果你正在處理的ASCII範圍之外的字符,你需要指定在你的代碼。
這樣做的一種方法是在代碼頂部設置編碼定義。
這個片段設置編碼在文件的頂部編碼拉美-1(其中包括0xb0
):
#!/usr/bin/python
# -*- coding: latin-1 -*-
import os, sys
...
當我寫我的外語「閃卡」的方案,我總是使用python 3.x作爲它的本地編碼是utf-8。編碼問題通常會少得多。
如果你的程序,很多人將分享工作,但是,你可能要考慮使用encode
和decode
與Python 2.x中,但只有存儲和檢索的持久性存儲的數據元素時。 encode
您的非ASCII字符,以靜默方式處理內存中這些unicode字符串的十六進制表示形式,並將它們保存爲十六進制。最後,從持久存儲中獲取unicode字符串時使用decode
,但僅限最終用戶顯示。這將消除你的程序中不斷需要你的字符串encode
和decode
。
@jcoon對這個問題也有相當標準的迴應。