Python 编码检测
====================
Python 编码
====================
最近被编码快搞死了,首先是 pdf -> txt/swf pdf 内嵌字体问题 又是 txt 编码问题, txt 的编码问题无法最为繁琐
有在文件头记录的,有没有文件头的,自己写代码判断的话就被搞死了
最后,找到一个Python编码检测的库,写的代码终于能解析大部分txt文件了
pip install chardet
import chardet
import codecs
encoding = chardet.detect(open(file_path).readline())['encoding']
if not encoding.lower() == 'utf-8':
file = codecs.open(file_path, encoding=encoding)
dst_file = open('utf-8.txt', 'w+)
for line in file:
dst_file.write(line.encode('utf-8'))
file.close()
dst_file.close()
Windows 下以 unicode 保存的文件编码是 UTF-16LE
以 unicode big 保存的是 UTF-16BE
都可以用 codecs.open(file_path, encoding='utf-16') 打开
对于Windows 下用ANSI保存的文件,或者UE保存的文件几乎都可以用
codecs.open(file_path, encoding='gbk') 打开并没有乱码
不过某些 chardet 检测的 GB2312 编码的文件,用gb2312打开时也会有编码错误,所以如果检测到是gb2312还是换成 gbk编码打开