Python-Python 3.1はUTF-16エンコードファイルを処理できないようですか?

character-encoding python utf-16 utf-8
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(data、self.errors、final)UnicodeDecodeError: ‘utf8’コーデックはデコードできません位置0のバイト0xfe:予期しないコードバイト

これらの.txtファイルはすべてUTF-16であることがわかります(FireFoxによれば、いずれにしても)。 Python 3.xはあらゆる種類の文字エンコーディングを処理できるはずだと思いましたか?

ベスト、ジョージナ

  1  0


ベストアンサー

`open(bla、 ‘r’、encoding =” utf-16 “)`を使用します。

7


さまざまなutf-16エンコーディングがあります。

  • * utf-16-be * big endian no BOM

  • * utf-16-le *リトルエンディアン、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'

4


タイトルとURLをコピーしました