【发布时间】:2013-11-23 00:43:02
【问题描述】:
在windows上,当文件路径中有汉字时,tar.gz中的汉字会出现乱码,解压后还是乱码。
【问题讨论】:
-
python3,标题中可以看到
-
那么,您是否尝试阅读
tarfile文档但不理解那里的解释?还是您只是懒得尝试?
标签: python python-3.x chinese-locale
在windows上,当文件路径中有汉字时,tar.gz中的汉字会出现乱码,解压后还是乱码。
【问题讨论】:
tarfile 文档但不理解那里的解释?还是您只是懒得尝试?
标签: python python-3.x chinese-locale
这一切都在文档中的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 字符集,但不能保证这一点,而且在不知道您使用的是什么工具的情况下,我不能给出有关如何解决的更多详细信息。【讨论】: