• python使用zipfile解压文件中文乱码问题


    中文在编程中真实后娘养的,各种坑爹,python3下中文乱码这个问题抓破了头皮,头疼。看了alex的文章,才有种恍然大悟的感觉(链接在底部)。

    一句话,就是转换成unicode,压缩前是什么编码,使用什么编码encode再decode回来

    先看测试代码:

    #-*- coding: utf-8 -*-
    import zipfile
    
    # 默认模式r,读
    azip = zipfile.ZipFile("/Users/a/my_file/feise.zip", 'r')
    # 返回所有文件夹和文件
    zip_list = azip.namelist()
    for zip_file in zip_list:
        print(zip_file)
        print(zip_file.encode('utf-8'))
    

      

    真实文件名

    绯色/w1985jc/沈嫣日记/8_【沈嫣日记】(33-完).txt  
    print(zip_file):
    τ│╔½/ú≈ú▒ú╣ú╕ú╡úΩúπ/╔≥µ╠╚╒╝╟/8_í╛╔≥µ╠╚╒╝╟í┐ú¿33-═Ωú⌐.txt
    print(zip_file.encode('utf-8'))
    b'xcfx84xe2x94x82xe2x95x94xc2xbd/xc3xbaxe2x89x88xc3xbaxe2x96x92xc3xbaxe2x95xa3xc3xbaxe2x95x95xc3xbaxe2x95xa1xc3xbaxcexa9xc3xbaxcfx80/xe2x95x94xe2x89xa5xc2xb5xe2x95xa0xe2x95x9axe2x95x92xe2x95x9dxe2x95x9f/8_xc3xadxe2x95x9bxe2x95x94xe2x89xa5xc2xb5xe2x95xa0xe2x95x9axe2x95x92xe2x95x9dxe2x95x9fxc3xadxe2x94x90xc3xbaxc2xbf33-xe2x95x90xcexa9xc3xbaxe2x8cx90.txt'
    

      

    废话不多说了,直接上最后成功代码,使用cp437可以正确读取部分,但是还有一部分却打印出来u的编码,

    因为看了alex的文章,又在catch中加上了utf-8的解码方式

    #-*- coding: utf-8 -*-
    import zipfile

    # 默认模式r,读
    azip = zipfile.ZipFile("/Users/a/my_file/feise.zip", 'r')
    # 返回所有文件夹和文件
    zip_list = azip.namelist()
    for zip_file in zip_list:
    print(zip_file)
    print(zip_file.encode('utf-8'))
    try:
    zip_file = zip_file.encode('cp437').decode('gbk')
    except:
    zip_file = zip_file.encode('utf-8').decode('utf-8')
    print(zip_file)

      一句话,就是转换成unicode,压缩前是什么编码,使用什么编码encode再decode回gbk、utf-8

    本文参考文档:

    https://www.cnblogs.com/CN-S/p/6566395.html

    https://www.cnblogs.com/alex3714/articles/7550940.html

  • 相关阅读:
    Linux入门-第四周
    Linux入门-第三周
    使用yum命令报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
    Linux-帮助的用法
    Linux-history的用法
    【memcached启动报错】
    【rabbitmq消息队列配置】
    【saltstack 集中化管理】
    【mongodb用户和身份认证管理】
    【mongdb主从复制和同步】
  • 原文地址:https://www.cnblogs.com/yaomaomao/p/8671344.html
Copyright © 2020-2023  润新知