Tarfile在中生成乱码文件名。焦油gz档案员

2024-04-26 17:49:29 发布

您现在位置:Python中文网/ 问答频道 /正文

在windows上,当文件路径中有汉字时,会将这些汉字拼凑在一起广州塔减压后,它们仍然是乱七八糟的。在


Tags: 文件路径windows
1条回答
网友
1楼 · 发布于 2024-04-26 17:49:29

这些都在文档中的Unicode issues中解释。在

对于PAX之前的所有tarball格式,包括tarfile使用的默认格式,文件名存储在“本地文件系统编码”中。压缩程序必须对解压程序想要什么进行疯狂的猜测,反之亦然。如果您在程序中不进行猜测,Python将为您完成,并猜测UTF-8。请参见^{},它解释了如果您不指定任何内容,它将使用ENCODING,以及{a3},这解释了它在Windows上默认为'utf-8'。在

因此,有三种解决方案:

  1. 使用PAX格式的tarballs。这很简单;只需将format=tarfile.PAX_FORMAT传递给TarFile构造函数。(您也可以设置tarfile.DEFAULT_FORMAT = tarfile.PAX_FORMAT来更改默认值。)只要您所使用的解压工具理解PAX,就可以设置了。在
  2. 找出解压工具需要哪种编码,并通过将format='big5'传递给TarFile构造函数显式地指定它。(您也可以设置tarfile.ENCODING='big5'来更改默认值。)同样,您的工具很有可能使用系统配置的OEM字符集,但不能保证这一点,而且在不知道您正在使用什么工具的情况下,我无法提供更多关于如何解决它的细节。在
  3. 让Python使用UTF-8,并说服您的解压工具读取UTF-8,而不是胡乱猜测。如果不知道你用的是哪种工具,我就不能给出更多的细节了。在

相关问题 更多 >