在Python 3中打开tar文件时出现UnicodeDecodeError

时间:2017-07-05 18:04:18

标签: python-3.x tar python-unicode

我正在使用Linux Mint 18.1和Python 3.5.2。

我有一个目前使用Python 2.7工作的库。我需要将该库用于Python 3项目。我正在更新它并遇到了一个我似乎无法解决的unicode问题。

首先,通过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

我第一次尝试修复是以open(tarfile, encoding='utf-8')打开它,因为我认为tar只会使用文件系统提供的内容。当我这样做时,我得到相同的错误(字节值改变)。

如果我尝试使用其他编码,请说latin-1,我会收到以下错误:

TypeError: Unicode-objects must be encoded before hashing

这让我相信utf-8是正确的,但我可能会误解。

有人可以提供建议吗?

1 个答案:

答案 0 :(得分:2)

我走错了路,以为这是一个奇怪的编码问题。当open()默认为文本(r)时,这只是一个简单的问题。在Python 2中,它是一个无操作。

修复方法是open(tarfile, 'rb')

带有unicode的假头......应该看到这一个来了。 :捂脸: