chardet
判断 stream:bytes 的时候,要短,然而不能太短
越短越不准,越长越慢
判断一个 15MB 的 txt 文件,须要耗时 5-20 秒
所以,我倡议,取前 256 个字节来判断,能够均衡速度和准确率
def check_encoding(stream: bytes) -> str | None:
encoding = chardet.detect(stream[:256]).get('encoding', None)
return encoding
这样(指取前 256 字节)大略只须要 10-30 ms 就能够判断出文件编码