【技巧】解压zip压缩包后中文字符出现乱码或消失的问题
评论
收藏

【技巧】解压zip压缩包后中文字符出现乱码或消失的问题

经验分享
晴天
2024-02-29 13:41·浏览量:3422
晴天
发布于 2024-02-19 19:59更新于 2024-02-29 13:413422浏览

一、问题描述


有些网上下载的压缩包,用电脑的解压软件手动解压后文件名很正常(如下):

可是使用影刀的“解压文件/文件夹”指令执行后,中文字有时出现乱码,或者直接消失了(如下)

二、原因分析


文件名编码问题: ZIP 压缩包中的文件名使用的编码方式可能与解压工具默认的编码方式不一致,导致解压后的文件名无法正确显示。解决方法是在解压时手动选择正确的编码方式,或者使用支持自动识别编码的解压工具。


操作系统和解压工具的兼容性问题: 不同的操作系统和解压工具对于中文字符的处理方式可能不同,可能会导致解压后的文件名乱码。解决方法是使用较新版本的解压工具,并确保操作系统和解压工具的语言设置正确。


三、解决方案


方法1. 魔法指令生成支持编码格式的解压指令

提示词如下:

请使用gbk编码解压zip文件到指定目录中。
示例:
输入:zip文件路径、目标目录路径、编码方式(gbk)
输出:解压后的文件


方法2. 使用代码自行封装指令

import zipfile
import os

def main(args):
    #测试例子:
    zip_file = r"C:\Users\yanjie\Downloads\20220304_2088421319548304.zip"
    unzip_folder = r"C:\Users\yanjie\Downloads\yyyy"
    unzip(zip_file,unzip_folder)
    
def decode_path(path):
    '''zipfile解压出现乱码,将乱码的路径编码为UTF8'''
    path_name = path.encode('437').decode('gbk')
    path_name = path_name.encode('utf-8').decode('utf-8')
    return path_name


def unzip(zip_file, unzip_folder):
    with zipfile.ZipFile(zip_file, 'r') as zip_ref:
        for file_one in zip_ref.filelist:
            file_one.filename = decode_path(file_one.filename) 
            zip_ref.extract(file_one, unzip_folder)


收藏7
全部评论1
最新
发布评论
评论