Python-Python 3.1似乎无法处理UTF-16编码的文件?

| 我正在尝试运行一些代码以简单地浏览一堆文件,并将恰好是.txt文件的文件写入同一文件,以删除所有空格。这是一些可以解决问题的简单代码:
for subdir, dirs, files in os.walk(rootdir):
for file in files:
    if \'.txt\' in file:
        f = open(subdir+\'/\'+file, \'r\')
        line = f.readline()
        while line:
            line2 = line.split()
            if line2:
                output_file.write(\" \".join(line2)+\'\\n\')
            line = f.readline()
        f.close()
但是,相反,我得到以下错误: 文件\“ / usr / lib / python3.1 / codecs.py \”,行300,在解码中     (结果,消耗)= self._buffer_decode(数据,self.errors,最终) UnicodeDecodeError:\'utf8 \'编解码器无法解码位置0的字节0xfe:意外的代码字节 事实证明,这些.txt文件全部位于UTF-16中(无论如何,根据FireFox)。我认为Python 3.x应该能够处理任何类型的字符编码? 最好, 乔治娜     
已邀请:
使用
open(bla, \'r\', encoding=\"utf-16\")
。     
有多种utf-16编码。 utf-16-be big endian没有BOM utf-16-le little endian无BOM utf-16小尾数+ BOM 例子:
Python 3.2 (r32:88452, Feb 20 2011, 11:12:31) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.
>>> a = \'a\'.encode(\'utf-16\')
>>> a
b\'\\xff\\xfea\\x00\'
>>> a.decode(\'utf-16\')
\'a\'
>>> a = \'a\'.encode(\'utf-16-le\')
>>> a
b\'a\\x00\'
>>> a.decode(\'utf-16-le\')
\'a\'
>>> a = \'a\'.encode(\'utf-16-be\')
>>> a
b\'\\x00a\'
>>> a.decode(\'utf-16-be\')
\'a\'
您可以使用@filmor的答案所建议的编码     

要回复问题请先登录注册