python判斷文件和字符串編碼類型可以用chardet工具包,可以識別大多數的編碼類型。但是前幾天在讀取一個Windows記事本保存的txt文件時,GBK卻被識別成了KOI8-R,無解。
然后就自己寫了個簡單的編碼識別方法,代碼如下:
coding.py
# 說明:UTF兼容ISO8859-1和ASCII,GB18030兼容GBK,GBK兼容GB2312,GB2312兼容ASCIICODES = ['UTF-8', 'UTF-16', 'GB18030', 'BIG5']# UTF-8 BOM前綴字節UTF_8_BOM = b'/xef/xbb/xbf'# 獲取文件編碼類型def file_encoding(file_path): """ 獲取文件編碼類型/n :param file_path: 文件路徑/n :return: /n """ with open(file_path, 'rb') as f: return string_encoding(f.read())# 獲取字符編碼類型def string_encoding(b: bytes): """ 獲取字符編碼類型/n :param b: 字節數據/n :return: /n """ # 遍歷編碼類型 for code in CODES: try: b.decode(encoding=code) if 'UTF-8' == code and b.startswith(UTF_8_BOM): return 'UTF-8-SIG' return code except Exception: continue return '未知的字符編碼類型'
說明:file_encoding方法用于判斷文件編碼類型,參數為文件路徑;string_encoding方法用于判斷字符串編碼類型,參數為字符串對應的字節數據
使用示例:
import codingfile_name = input('請輸入待識別文件路徑:/n')encoding = coding.file_encoding(file_name)print(encoding)以上這篇Python判斷文件和字符串編碼類型的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答