列表格式显示

- 分类

广告招商中......
联系方式!

- 时间排序 更多...
    - 点击排序 更多...
      - 大小排序 更多...
        作者

         

        最近发布的软件 更多>>

        首页 >> >> >>如何解决Python Zipfile中的乱码 发布者:blog >> 本人发布的更多软件

        广告招商中...... 联系方式!

        如何解决Python Zipfile中的乱码 

        时间:2024-02-18 14:07:51      作者:blog     访问量:  
        ;开始下载地址

        #

        如果在zipfile.ZipFile中得到的文件名有中文和日文,很可能是乱码,因为

        在zip标准中,文件名的编码不是unicode,但是根据系统默认的字符集可能会被各种软件使用(这是一个猜测),当根据file flag检测到zipfile时,仅支持 cp437 和 utf。 -8。

        具体zipfile模块中的源代码如下:

        if?flags?&?0x800:
        ????#?UTF-8?file?names?extension
        ????filename?=?filename.decode(utf-8)else:
        ????#?Historical?ZIP?filename?encoding
        ????filename?=?filename.decode(cp437)

        可以看到,除了编码正确识别为utf8时,会被识别解码为cp437编码,但如果实际是gbk等编码,就会变成乱码。所以解决方法是在解码为cp437后手动转换为正确的编码。

        <p style="box-sizing: border-box; margin-top: 20px; margin-bottom: 20px; padding: 0px; border: none; outline: 0px; vertical-align: baseline; background: rgb(255, 255, 255); font-family: q uot;Microsoft YaHei", 微软雅黑, Arial, "Open Sans", SimSun, sans-serif; list-style: none; text-indent: 2em; line-height: 28.8px; color: rgb(51, 51, 51); text-wrap: wrap;">实际过程中,可以先解压zipfile,然后直接重命名unzip文件夹中的乱码文件。具体实施过程如下:

        import?os
        def?an_garcode(dir_names):
        ????"""anti?garbled?code"""
        ????os.chdir(dir_names)
        ????for?temp_name?in?os.listdir(.):
        ????????try:
        ????????????#使用cp437对文件名进行解码还原
        ????????????new_name?=?temp_name.encode(cp437)
        ????????????#win下一般使用的是gbk编码
        ????????????new_name?=?new_name.decode("gbk")
        ????????????#对乱码的文件名及文件夹名进行重命名
        ????????????os.rename(temp_name,?new_name)
        ????????????#传回重新编码的文件名给原文件名
        ????????????temp_name?=?new_name
        ????????except:
        ????????????#如果已被正确识别为utf8编码时则不需再编码
        ????????????pass????????if?os.path.isdir(temp_name):
        ????????????#对子文件夹进行递归调用
        ????????????an_garcode(temp_name)
        ????????????#记得返回上级目录
        ????????????os.chdir(..)an_garcode(os.getcwd())

        众多



        本页Html网址:/htmlsoft/619344.html

        本页aspx网址:/soft.aspx?id=619344&bianhao=202402181407514798_84324&kind1=&kind2=

        最后访问时间:2024-03-28 16:49:46

        上一篇:Windows上WinRAR.exe命令行参数说明 超全

        下一篇:python3_zipfile_创建压缩文件_读写注释

        增加   


        相关评论        新窗口打开查看评论