最近作一個項目,須要讀取文件內容,可是文件的編碼方式有可能都不同。有的使用GBK,有的使用UTF8。因此在不正確讀取的時候會出現以下錯誤:django
UnicodeDecodeError: 'gbk' codec can't decode byte
並且當你使用rb模式讀取文件時候,返回的結果經過django返回的json會出現下面錯誤:json
TypeError: b'\xbc\x8c\xe6\x9c\xaa\xe6\x9d\xa5' is not JSON serializable
總之就是編碼不對,因此要先能識別文件的編碼方式,而後根據此編碼方式進行對文件編碼,最後返回文件內容。編碼
解決方法以下:code
with open("your_file", 'rb') as fp: file_data = fp.read() result = chardet.detect(file_data) file_content = file_data.decode(encoding=result['encoding'])
注: chardet是第一個第三方庫,你須要本身使用pip進行安裝。ip
@完it