2017-01-05 7 views
2

ノートパッドにemダッシュだけのファイルを作成し、このファイルをUnicode (big endian)エンコーディングで保存しました。メモ帳では、emダッシュが表示されます。私は、ファイルを開くとPython 3でこのようにそれを読んで/ IDLE:バイトオーダーのマーク付きのUTF-16ビッグエンディアンエンコーディング

open(file_path, encoding="UTF-16-BE").read() 

私はこれを取得:

b'\xfe\xff \x14' 
:バイトとして表さ

'\ufeff—' 

、ファイルの内容は、このです

BOMを処理して表示しないでください。私はPythonの利用可能なエンコーディングを見て、UTF_8_SIGのようにそこにはUTF_16_BE_SIGのようなものはありませんでした。ここで何が起こっているのですか?それをどうやって適切に処理しますか?

+0

可能な重複:http://stackoverflow.com/questions/8827419/converting-utf-16-utf-8- and-remove-bom –

+0

@Robᵩ - 私はあなたの答えがリンクされた答えよりも好きなので、私はdupに投票しません。 – tdelaney

答えて

2

UTF-16のエンディアンを指定すると、BOMチェックが無効になります。あなたはコーデックがBOMを調査し、削除したい場合は、非エンディアンコーデックを指定します。

open(file_path, encoding="UTF-16").read() 
関連する問題