-2

在windows上,当文件路径中有汉字时,tar.gz中的汉字会出现乱码,解压后仍然是乱码。

4

1 回答 1

0

这在文档中的Unicode 问题中都有解释。

对于 PAX 之前的所有 tarball 格式(包括默认格式),tarfile文件名都存储在“本地文件系统编码”中。压缩程序必须对解压缩程序想要什么进行疯狂的猜测,反之亦然。如果你不去猜你的程序,Python 会帮你猜,猜 UTF-8。请参阅TarFile,它解释了它ENCODING在您不指定任何内容时使用,以及ENCODING,它解释了它'utf-8'在 Windows 上的默认设置。

所以,有三种解决方案:

  1. 使用 PAX 格式的压缩包。这很简单; 只需传递format=tarfile.PAX_FORMATTarFile构造函数。(您也可以设置tarfile.DEFAULT_FORMAT = tarfile.PAX_FORMAT更改默认值。)只要您用于解压缩的工具理解 PAX,您就可以设置。
  2. 找出您的解压缩工具需要哪种编码,并通过例如传递format='big5'TarFile构造函数来明确指定。(您也可以设置tarfile.ENCODING='big5'更改默认值。)同样,您的工具很有可能使用系统配置的 OEM 字符集,但不能保证这一点,而且在不知道您使用的是什么工具的情况下,我无法提供更多详细信息关于如何弄清楚。
  3. 让 Python 使用 UTF-8,并说服你的解压工具读取 UTF-8 而不是胡乱猜测。在不知道您使用的是哪种工具的情况下,我无法提供更多详细信息。
于 2013-11-11T09:40:41.663 回答