Python 2/3下如何处理cjk编码的zip文件

💡 原文中文,约1200字,阅读约需3分钟。
📝

内容提要

本文讨论了在Python 2和3中处理中文编码的zip文件的方法。在Python 2中,通过将文件名解码为unicode来处理中文;在Python 3中,根据语言编码标志(EFS)选择解码方式,通常使用gb18030。建议将所有文件名连接起来以提高编码猜测的准确性。

🎯

关键要点

  • 在Python 2中,zipfile.ZipInfo的filename类型是str,可以通过解码为unicode来处理中文文件名。
  • 在Python 3中,根据语言编码标志(EFS)选择解码方式,EFS为1时使用utf8,EFS为0时使用cp437。
  • 许多软件在创建zip文件时使用gb18030或其他非标准编码,因此需要将文件名反转为bytes后再解码。
  • 为了提高编码猜测的准确性,可以将所有文件名连接起来进行编码猜测。

延伸问答

如何在Python 2中处理中文编码的zip文件?

在Python 2中,可以通过将zipfile.ZipInfo的filename解码为unicode来处理中文文件名。

Python 3中如何选择zip文件的解码方式?

在Python 3中,根据语言编码标志(EFS)选择解码方式,EFS为1时使用utf8,EFS为0时使用cp437。

为什么需要将文件名反转为bytes再解码?

因为许多软件在创建zip文件时使用gb18030或其他非标准编码,因此需要将文件名反转为bytes后再解码。

如何提高编码猜测的准确性?

可以将所有文件名连接起来进行编码猜测,以提高编码猜测的准确性。

在Python 2中如何读取zip文件的中文文件名?

可以使用zipfile模块读取zip文件,并通过decode方法将文件名解码为unicode。

mczip是什么?

mczip是一个兼容Python 2和Python 3的库,提供了处理zip文件的编码猜测功能。

➡️

继续阅读