Python 编码检测

分类-哒哒哒 一月 18, 2011 21:06 779 Views 0 Comments
标签:

====================

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编码打开


COMMENTS | 评论

自言自语  --  发表新文章 管理

Powered by pLite :)  由 Google AppEngine 强力驱动