Python处理多个不同编码的文件
当需要把多个不同编码的文件合并成一个的时候,unicode是一个很好的选择。但是如果把不同的编码转换成unicode,python并没有提供一个很好的方法。
Python内部是使用unicode来编码,但要把不同的编码转换成unicode,首先需要知道需要转换的内容是什么编码的。这种设计用来处理转码特定的编码文件没有问题,但是要写一个通用的工具,将是不可能的任务。
但是对于一些特殊的项目,还是可以做一些事情的。有一个检测文本编码类型的库可以借用:chardet 。
chardet的使用很简单。它的输入如下:
{'confidence': 0.62467997951868914, 'encoding': 'GB2312'} |
从它的输出可以看到,这并不是一个非常有效的方法,但是聊胜于无。
在我的案例里面,是这样使用的:
sf = codecs.open("xxx.txt", "w", "utf-8") |
对中文需要注意的是, 虽然chardet 能检测出的中文编码是gb2312,但是最好用gb18030来处理它,后者的覆盖会更全一点。