ここに2つの質問があります。私は通常BOMを備えたUTF-8であるファイルのセットを持っています。それらを(理想的には適切に)BOMなしのUTF-8に変換したいと思います。これcodecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors)
を処理するようです。しかし、私は実際に使用法の良い例を見ていません。これはこれを処理するための最良の方法でしょうか?
source files:
Tue Jan 17$ file brh-m-157.json
brh-m-157.json: UTF-8 Unicode (with BOM) text
また、明示的に知らなくても(ASCIIとUTF-16で見られる)さまざまな入力エンコーディングを処理できれば理想的です。これはすべて実行可能であるように思われます。既知のPythonエンコーディングを取得してBOMなしでUTF-8として出力できるソリューションはありますか?
下から提案された1つのsol'nを編集します(ありがとう!)
fp = open('brh-m-157.json','rw')
s = fp.read()
u = s.decode('utf-8-sig')
s = u.encode('utf-8')
print fp.encoding
fp.write(s)
これにより、次のエラーが発生します。
IOError: [Errno 9] Bad file descriptor
ニュース速報
コメントで、「r +」/「r + b」ではなく「rw」モードでファイルを開くのが間違っていると言われているので、最終的に質問を再編集して、解決した部分を削除する必要があります。
r+
モードを使用してファイルを開く必要があります。b
面白いラインエンディングビジネスなしでWindowsでも動作するように追加します。最後に、ファイルの最初に戻って、最後に切り捨てることをお勧めします。更新された回答を参照してください。