我有一張Excel電子表格,其中包含一些英鎊符號。UnicodeEncodeError:'ascii'編解碼器無法對字符進行編碼u' xa3'
當我嘗試使用xlrd模塊讀它,我得到以下錯誤:
x = table.cell_value(row, col)
x = x.decode("ISO-8859-1")
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 0: ordinal not in range(128)
如果我重寫這x.encode(「UTF-8」)將停止拋出一個錯誤,但不幸的是,當我將數據寫入其他地方(如latin-1)時,£符號全部變成亂碼。
我該如何解決這個問題,並正確讀取英鎊符號?
--- UPDATE ---
某種類型的讀者建議我並不需要它在所有解碼,或者說我可以只是將其編碼爲Latin-1的,當我需要。這樣做的問題是我最終需要將數據寫入CSV文件,並且似乎反對原始字符串。
如果我不編碼或數據都進行解碼,然後出現這種情況(後我已經添加了字符串數組稱爲項):
for item in items:
#item = [x.encode('latin-1') for x in item]
cleancsv.writerow(item)
File "clean_up_barnet.py", line 104, in <module>
cleancsv.writerow(item)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2022' in position 43: ordinal not in range(128)
我得到同樣的錯誤,即使我取消對拉丁線1的評論。
你是否'.decode'ing兩次? – katrielalex 2010-08-27 21:05:29
我不這麼認爲。上一行是來自xlrd模塊的x = table.cell_value(row,col),雖然 - 也許這是在做一些有趣的事情? – AP257 2010-08-27 21:07:39