处理带汉字的文件有问题

时间:2017-09-07 08:06:13

标签: python utf-16 chinese-locale

我有一个由工具转储的文件(带有自定义扩展名)。该文件是英文和中文的混合文件。韩国人物。可以使用记事本读取文件,并且可以看到非英文字符。通过运行以下代码,我能够确定该文件是UTF16-LE编码:

def check_encoding(filename):
        """
        """
        fh = open(filename, 'rb') # open the file in raw binary mode
        data = fh.read() # read the contents of the file
        return chardet.detect(data)['encoding']

返回'UTF-16LE'。

我有一个处理此文件的方法,我这样做:

file = open(filename, 'r', encoding='UTF-16-LE')
for line in file:

但是当我执行这个方法时,我得到了这个错误(在for循环的开头):

  

UnicodeDecodeError:'utf-16-le'编解码器无法解码位置上的字节   106-107:非法编码

我尝试使用encoding = UTF8打开文件,但是会抛出相同的错误(虽然utf-8编解码器位于不同的位置)

该文件太大,我无法手动缩小到导致问题的确切行。

现在这是有趣的部分。我制作了一份文件(我们称之为copy.xyz)。现在我在Notepad ++中打开原始文件并复制所有内容,将其粘贴到copy.xyz(也在Notepad ++中打开)并保存(ctrl + s)。现在,如果我尝试在副本上运行我的方法,它不会抛出任何错误!任何人都可以帮我弄清楚这里发生了什么,以及如何修复原始文件中的错误?

编辑:我以原始二进制模式打开文件,并尝试使用chardet计算每行上字符的编码。这给了我12种不同的编码。下一步会是什么?

0 个答案:

没有答案