2015-05-28 133 views
0

我使用urllib.request.urlopen從Web API獲取* .srt文件。 (相關)代碼(Python 3.x):「'charmap'編解碼器無法編碼字符」(Http請求)

with urllib.request.urlopen(req) as response: 
    result = response.read().decode('utf-8') 
    print(result) 

    with open(subpath, 'w') as file: 

     file.write(result) 
     file.close() 

這工作正常,除了一些文件。對於某些文件,我收到以下錯誤: UnicodeEncodeError: 'charmap' codec can't encode character '\u266a' in position 37983: character maps to <undefined>

(\ u266a是四分音符符號。)

如何解決這個問題?我可以從.read()返回的字節對象中過濾這個字符嗎?或者我可以編碼錯誤被忽略?提前致謝。

另外,請注意我沒有找到有關話題無數」使用.decode ......不能編碼字符...'-錯誤,但是,在大多數情況下(‘UTF-8’)是解決辦法。

回答

0

我一直沒能解決的解碼錯誤,但是,我發現它周圍的方式。

通過寫入二進制模式文件中的字節對象可以被寫入,所以沒有解碼是必要的:

with urllib.request.urlopen(req) as response: 
    result = response.read() 
    # print(result) 

    with open(subpath, 'wb') as file: 

     file.write(result) 
     file.close() 
相關問題