Python讀取文件編碼及內容

Python讀取文件編碼及內容

最近作一個項目,須要讀取文件內容,可是文件的編碼方式有可能都不同。有的使用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

相關文章
相關標籤/搜索