2017-07-05 13 views
0

私はLinux Mint 18.1とPython 3.5.2を使用しています。Python 3でtarファイルを開くときのUnicodeDecodeError

現在Python 2.7を使用しているライブラリがあります。私はPython 3プロジェクトのためにライブラリを使用する必要があります。私はそれを更新しており、修正できないようなユニコード問題にぶつかっています。

最初に、ファイルはtar cvjf tarfile.tbz2(Linuxシステム上)で作成され、後でPythonライブラリでopen(tarfile)として開きます。

私は、Python 3を使用して、そのままのコードを実行した場合、私は次のエラーを取得する:修正で

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc1 in position 11: invalid start byte 

私の最初の試みは、私はtarはだろうという印象の下にあったとしてopen(tarfile, encoding='utf-8')としてそれを開くようにしましたファイルシステムが与えたものだけを使用してください。これを行うと、同じエラー(バイト値が変わる)が発生します。

私は別のエンコーディングでしようとすると、latin-1言って、私は次のエラーを取得する:

TypeError: Unicode-objects must be encoded before hashing 

utf-8が正しいですが、私は誤解されるかもしれないと信じているように私につながります。

誰でも提案を提供できますか?

答えて

1

私はこれがいくつかの奇妙なエンコーディングの問題だと思って間違った経路を辿りました。その事実が単なる問題であったとき、open()はデフォルトでテキスト()と読むことができました。 Python 2ではノーオペレーションです。

修正はopen(tarfile, 'rb')です。

ユニコードのヘッドフェイクは、これが来るのを見たはずです。 :facepalm:

関連する問題