Windows 环境解压 zip 压缩包乱码问题

news2025/2/24 15:14:07

前言

 

最近在接受他人上传的 ZIP 压缩包时,发现解压后文件名出现了乱码,记得自己很久以前似乎把系统的编码改为了 UTF,所以盲猜是压缩包发送人的系统使用了 GBK 编码,出现了错误。

正文

探索

搜了一下,发现了知乎上一个很好的回答如下,基本就是说其实文件信息没有出问题,但是文件名编码方式通常会使用压缩方的编码。回答中给出了一种解法是使用 Bandzip 和 360 压缩 ,我是万年 7z 用户,但是却发现 7z 没有做相关的设置选项。暂时不考虑使用 Bandzip。

 如何修改压缩文件的编码? - 嘉的意外的回答 - 知乎 https://www.zhihu.com/question/384336846/answer/1148191607

首先要先保证文件是确实可以解码出正确结果的,搜了一下 Linux 环境下可以使用 unzip -O GBK来指定编码。

试了一下把压缩包拖到 Linux 系统,用下面的命令解压确实可以。

unzip -O GBK xxx.zip

所以其实到这里第一种 solution 就有了,可以直接用 Linux 的 unzip -O 来解决。(可以使用 WSL 或者容器或者虚拟机或者远程服务器)但是我这边有很多压缩包,要批量处理就要考虑 Linux 上写脚本了,另外有些场景可能不方便搬运到 Linux 环境。

Python 批量转编码(失败)

又不想换压缩软件,又不想用 Linux,想到了一种鲁莽的解法,就是直接 7z 解压不误,然后用 Python 批量处理所有文件名,把文件名字符串从 GBK 编码转 UTF-8 就好。

结果尝试后发现,直接解压后乱码的文件名,已经不再是原来的字节序列了,无法显示的字节序列已经被处理为了特殊符号,所以乱码文件名转字节序列后大致内容如下。可以看到乱码的字符已经被批量替换了,无法恢复出原始的GBK字节序列也就无法得到原来的中文内容。

���п��Էǵݹ�.cpp
b'\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xd0\xbf\xef\xbf\xbd\xef\xbf\xbd\xd4\xb7\xc7\xb5\xdd\xb9\xef\xbf\xbd.cpp'
���п��Էǵݹ�.exe
b'\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xd0\xbf\xef\xbf\xbd\xef\xbf\xbd\xd4\xb7\xc7\xb5\xdd\xb9\xef\xbf\xbd.exe'

直接 encode('gbk') 会报错如下:

Traceback (most recent call last):
  File "d:\xxx\filename_GBK2UTF.py", line 41, in <module>
    newfile = file.encode('gbk')
UnicodeEncodeError: 'gbk' codec can't encode character '\ufffd' in position 0: illegal multibyte sequence

Bandizip 真香

下载链接:Windows 版本的 Bandizip · 业内领先的压缩文件解决方案 (bandisoft.com)

下载和安装都很快,自动绑定了一下后缀名,然后打开压缩包,可以看到默认还是乱码。

但是按照提示点自动检测,如下图。

 问题解决。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/532402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

360°VR全景图片,探索未知,畅游全景

随着科技的不断发展&#xff0c;人们对于视觉的需求越来越高&#xff0c;单一平面的图片已经无法满足人们的需要。360VR全景图片的出现填补了这个空白&#xff0c;它以其全景视角和互动体验&#xff0c;为我们带来了一场视觉盛宴。下面就让我们一起来探讨一下360VR全景图片的特…

网易云商·七鱼智能客服自适应 ProtoStuff 数据库缓存实践

需求背景 目前&#xff0c;网易云商七鱼智能客服数据库缓存使用了 spring-data-redis 框架&#xff0c;并由自研的缓存组件进行管理。该组件使用 Jackson 框架对缓存数据进行序列化和反序列化&#xff0c;并将其以明文 JSON 的形式存储在 Redis 中。 这种方式存在两个问题&…

(数字图像处理MATLAB+Python)第八章图像复原-第三、四节:图像复原代数方法和典型图像复原方法

文章目录 一&#xff1a;图像复原代数方法&#xff08;1&#xff09;无约束最小乘方复原&#xff08;2&#xff09;约束复原 二&#xff1a;典型图像复原方法&#xff08;1&#xff09;逆滤波复原A&#xff1a;概述B&#xff1a;程序 &#xff08;2&#xff09;维纳滤波复原A&a…

【C语言】负数取模、取余

文章目录 一. 关于“取整”1. 向0取整2. 向负无穷取整3. 向正无穷取整4. 四舍五入式的取整 二. 关于“取模”的本质三. 取余和取模的区别 一. 关于“取整” 首先谈谈关于数学取整的问题 1. 向0取整 C中的除法和取整规则都是向0取整&#xff0c;即所有小数都向 0 的方向取整&…

第四十一天学习记录:C语言进阶:笔试题整理Ⅱ

喝汽水问题&#xff1a;1瓶汽水1元&#xff0c;2个空瓶可以换一瓶汽水&#xff0c;输入价钱&#xff0c;可以喝多少汽水。&#xff08;编程实现&#xff09; #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main() {int money 0;int total 0;int empty 0;s…

手把手教配置vsc中的c\c++环境

为了防止你之前所看vsc配置C\C视频或者教学不成功的残留影响&#xff0c;这边开始会对vsc进行一次卸载和删除缓存 打开控制面板--点击程序--点击卸载--卸载vsc 显示效果如下 点击是 上面三部完成vsc卸载&#xff0c;接下完成残留卸载 打开你的c盘&#xff0c;如图 点击进去&…

Vue3-黑马(十四)

目录&#xff1a; &#xff08;1&#xff09;vue3-进阶-router-令牌-前端路由 &#xff08;2&#xff09;vue3-进阶-router-令牌-前端路由 &#xff08;3&#xff09;vue3-进阶-pinia1 &#xff08;4&#xff09;vue3-进阶-pinia2 &#xff08;1&#xff09;vue3-进阶-rout…

vite3+vue3 项目打包优化

现在很多小伙伴都已经使用 Vite Vue3 开发项目了&#xff0c;如果你是 “前端架构师” 或者是 “团队核心” 的话&#xff0c;不得不可考虑的一个问题就是性能优化。 说到前端性能优化&#xff0c;个人认为主要有两个方面&#xff1a; 减少文件的体积&#xff0c;体积小了加载…

SIEM日志管理解决方案

如果管理员想知道管理的网络中发生了什么&#xff0c;以便洞察潜在的威胁并在它们变成攻击之前阻止它们&#xff0c;那么管理员需要查看网络日志。企业网络中的设备如路由器、交换机、防火墙、服务器&#xff0c;业务运行的应用程序&#xff0c;如数据库和web服务器等。所有这些…

SpringBoot核心运行原理解析之-------@EnableAutoConfiguration

核心运行原理 我们通常在使用Spring Boot时&#xff0c;只需要引入对应的starters,Spring Boot启动时变回自动加载相关依赖&#xff0c;配置相应的初始化参数&#xff0c;以最快捷&#xff0c;简单的形式对第三方软件进行集成&#xff0c;这边是Spring Boot的自动配置功能。下…

【服务器数据恢复】EMC NAS中的虚拟机数据恢复案例

服务器数据恢复环境&#xff1a; 北京某公司的EMC NAS&#xff0c;总共有3个节点&#xff0c;每个节点配置12块STAT硬盘。 NAS中存放有vmware虚拟机&#xff08;WEB 服务器&#xff09;和视频文件。 虚拟机通过NFS协议共享到ESX主机&#xff0c;视频文件通过CIFS协议共享给虚拟…

Scala字符串常用函数

Scala字符串常用函数 1. 子字符串-substring2. 字符串切分-split3. 去掉首尾空格-trim4. 与数值之间的转换完整代码参考链接 Scala中的字符串为String类型&#xff0c;其实就是Java中的java.lang.String。其常用函数如下&#xff1a; 1. 子字符串-substring substring()方法返…

AUTOSAR NvM 同步机制

一、部分 NvM API 解释 &#xff08;1&#xff09;Std_ReturnType NvM_ReadBlock(NvM_BlockIdType BlockId,void* NvM_DstPtr) 把Nv Block中的数据copy到NvM_DstPtr指向的RAM中&#xff0c;NvM_DstPtr可以是临时RAM&#xff0c;也可以是永久RAM&#xff08;永久RAM即配置工具…

自动化、智能、机器人-2023-

文明&#xff1a;农业、工业、信息、智能&#xff0c;以目前认知的四个阶段。 农业文明到工业文明&#xff1a;机械自动化 工业文明到信息文明&#xff1a;电气自动化 信息文明到智能文明&#xff1a;数据自动化 这些时代典型的机器人&#xff1a; 机械自动化 电气自动化 数…

Mini_Web开发

文章目录 服务器开发回顾面向对象服务端客户端&#xff08;浏览器&#xff09;请求数据处理判断不同的请求路径&#xff0c;返回不同的数据给前端 单独封装方法不同请求路径处理的方法再次拆分业务封装JSON数据处理 Mini_Web开发导入数据使用Python操作数据库使用pymysql模块日…

瑞吉外卖 - 编辑员工信息功能(9)

某马瑞吉外卖单体架构项目完整开发文档&#xff0c;基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成&#xff0c;有需要的胖友记得一键三连&#xff0c;关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料&#xff1a;https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

238:vue+openlayers绘制扩展,弓形、曲线、扇形、双箭头、进攻方向...

第238个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中利用ol-plot插件进行绘制图形扩展,可以绘制弓形、弧形、标志旗、战斗进攻图形等等。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他…

win11 下部署Vicuna-7B,Vicuna-13B模型,

运行Vicuna-7B需要RAM>30GB或者14GB的显存 运行Vicuna-13B需要RAM>60GB或者28GB的显存 如果没有上面的硬件配置请绕行了&#xff0c;我笔记本有64G内存&#xff0c;两个都跑跑看&#xff0c;使用python3.9&#xff0c;当时转换13b时一直崩溃后来发现是没有设定虚拟内存&…

Linux指令 快捷键

热键 上一次我们说到了linux的基本指令&#xff0c;这次我们先说一下热键 TAB TAB键在linux中有什么作用呢&#xff1f;&#xff1f; 在Linux中&#xff0c;假设我们想要输入的指令忘记了&#xff0c;我们可以TAB两下&#xff0c;帮我们补全命令或者假如命令太多&#xff0…

C++基础STL-set容器

set容器介绍&#xff1a; set译为集合&#xff0c;集合是按照特定顺序存储唯一元素的容器。在集合中&#xff0c;元素的值也标识它(值本身就是键&#xff0c;类型为T)&#xff0c;并且每个值必须是唯一的。集合中元素的值在容器中一次就不能修改(元素总是const)&#xff0c;但可…