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文件的编码猜测功能。
➡️