2017-05-30 59 views
0

請我需要這方面的幫助:的UnicodeDecodeError:「字符映射」編解碼器不能在1010494位置解碼字節0x9d:字符映射爲<undefined>

url ='https://www.sec.gov/Archives/edgar/data/1437750/0001477932-13-004416.txt' 
with open('file', 'wb') as f: 
    f.write(requests.get('%s' % url).content) 
with open('file', 'r') as t: 
      words= t.read() 

上面給了我以下錯誤:

return codecs.charmap_decode(input,self.errors,decoding_table)[0] 
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 1010494: character maps to < undefined> 

謝謝!

回答

-1

爲什麼你將你的文件寫成二進制文件,然後將它作爲unicode字符串讀取? Python不知道如何解碼原始流中的一些字節,直到告訴它使用哪個編解碼器。既然你在你的第一個命令已經流文件不是UTF-8編碼,嘗試閱讀時,你的文件進行解碼,以latin-1

with open('file', 'r', encoding='latin-1') as t: 
    words = t.read() 
+0

合作。非常感謝。 – user5282933

+0

什麼樣的ASCII字符集是0x9d有意義?這不是有效的Windows-1252。 Python「latin-1」編解碼器將其轉換爲Unicode 0x9D,即「操作系統命令」。[1]這沒什麼意義。使用「latin-1」編解碼器轉換此類文本不會使Python程序崩潰,但您在Unicode中得到的是帶有[009d]的框。轉換爲「拉丁-1」只是關於這個問題的文件。 它似乎是某種引用標記,當它出現在英文文本中時。但它不是Windows-1252的特殊引號之一。 [1] http://www.fileformat.info/info/unicode/char/009d/index.htm –

+1

它不僅* UTF-8編碼,似乎嵌入在頁面中的二進制數據。你不應該試圖以文本的形式讀取二進制數據!使用'latin-1'編碼是一種應該避免的黑客,除非你專門用它來清理別人的混亂,而且你真的知道自己在做什麼。 –

相關問題