在Windows上,当文件路径中有中文字符时,中文字符会在tar.gz中出现乱码,解压缩后仍会出现乱码。
答案 0 :(得分:0)
这些都在文档中的Unicode issues中进行了解释。
对于PAX之前的所有tarball格式 - 包括tarfile
使用的默认格式 - 文件名存储在"本地文件系统编码"中。压缩程序必须大量猜测解压缩程序需要什么,反之亦然。如果你不想对你的程序进行猜测,Python会为你做,并猜测UTF-8。请参阅TarFile
,其中说明如果您没有指定任何内容,它会使用ENCODING
,而ENCODING
会解释它在Windows上默认为'utf-8'
。
所以,有三种解决方案:
format=tarfile.PAX_FORMAT
传递给TarFile
构造函数即可。 (您也可以设置tarfile.DEFAULT_FORMAT = tarfile.PAX_FORMAT
来更改默认值。)只要您使用解压缩工具了解PAX,就可以设置。format='big5'
传递给TarFile
构造函数来明确指定。 (您也可以设置tarfile.ENCODING='big5'
来更改默认值。)同样,您的工具很可能会使用您系统配置的OEM字符集,但不能保证,并且不知道您使用的是什么工具#39;重新使用,我无法提供有关如何解决问题的更多细节。