爲什麼我會遇到這個問題?我該如何解決它?Python編碼問題
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 24: unexpected code byte
謝謝
爲什麼我會遇到這個問題?我該如何解決它?Python編碼問題
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 24: unexpected code byte
謝謝
某處,也許微妙的是,你所要求的Python把字節流成一個字符的「字符串」。
不要將字符串視爲「字節」。一個字符串是一個數字列表,每個數字在Unicode中具有一致的含義。 (#65 =拉丁文資本A.#19968 =漢字「一」/「第一」)。
將Unicode實體列表編碼爲字節流的方法很多。 Python假定你的字節流是特定的這種方法的結果,稱爲「UTF-8」。
但是,您的字節流的數據不符合該方法。因此錯誤被提出。
您需要計算出字節流的編碼,並告訴Python該編碼。
重要的是要知道,如果您使用的是Python 2或3,以及導致此異常的代碼,以查看您的字節來自何處以及處理它們的適當方式。
如果是通過讀取文件,您可以明確地處理讀取的字節。但是你必須確定文件編碼。
如果它來自作爲源代碼一部分的字符串,那麼Python會假設您的源文件有「錯誤的事情」......可能需要設置$LC_ALL
或$LANG
。現在是瞭解編碼概念的最佳時機,以及文本編輯器如何選擇編碼編碼以及語言和操作系統的標準。
除了Joe所說的之外,chardet是檢測源數據編碼的有用工具。
某處有一個編碼爲「Windows-1252」(或「cp1252」)的純字符串,其中包含「右單引號」(')而不是APOSTROPHE(')。這可能來自您讀取的文件,甚至可能來自您的Python源文件;你可以運行Python 2.x並且在腳本開始附近有一個# -*- coding: utf8 -*-
行,或者你可以運行Python 3.x.
您沒有提供足夠的數據;然而,在某處你有一個cp1252編碼的字符串,你試圖(顯式或隱式)解碼爲UTF-8的Unicode。這不起作用。
給我們更多信息,我們將再次嘗試幫助您。
喬Koberg的回答讓我想起了我的一箇舊的答案,其中一些人已經發現的有用的:Python UnicodeDecodeError - Am I misunderstanding encode?
你能解釋一下你想幹什麼? – supersighs 2010-07-06 18:00:39
請提供更多信息併發布一些代碼。 – Philipp 2010-07-06 18:00:40
請參閱:http://groups.google.com/group/pylons-discuss/browse_thread/thread/ec18b194bd260244?pli=1 – Jon 2010-07-06 18:01:20