Linux下解决zip压缩包文件名乱码问题
1.unar
这个工具会自动检测文件的编码,也可以通过-e
来指定:
$ unar file.zip
即可解压出中文文件。
Debian下默认安装了unar,Archlinux下需要安装AUR中的unarchiver
。
$ yaourt -S unarchiver
2.unzip
可以给unzip打补丁,这样通过-O
选项就能指定编码
$ unzip -O gbk myzip.zip
Archlinux下可以直接安装AUR下的unzip-iconv
或者unzip-natspec
$ yaourt -S unzip-iconv
注:直接用unzip解压gbk编码的zip压缩包得到一个目录,在shell下查看可能会得到类似''$'\274\362\300\372''ģ'$'\260\345'
这样的乱码目录名,这时候在文件管理器里面打不开这个文件夹,也删不掉。在shell里面用rm -rf 加上上面那一串乱码也没法删掉。这时候可以在名字前面加上./
,在用rm -rf删除,就能删掉了
3.convmv
1.convmv简介
convmv存在于常见操作系统的软件仓库中。如果当前没有工具,可以直接安装。
$ convmv -f 源编码 -t 新编码 [选项] 文件名
常见有用的选项有:
-r
递归处理子文件夹
--notest
真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
--unescape
可以做一下转义,比如把%20变成空格,如果你不知道这是在做什么,就不要尝试了。
2.实例
一般可解决解压zip而产生的中文文件名乱码的步骤:先试着将gbk文件名改为UTF-8:
$ convmv -f gbk -t utf8 -r MY_DIR
如果确认输出无误:
$ convmv --notest -f gbk -t utf8 -r MY_DIR
3.处理zip文件乱码
配合 7z ,可以解决 zip 文件中的中文文件编码问题。
$ mkdir dir_path
$ LC_ALL=C 7z -odir_path x zip文件名.zip
$ convmv -f gbk -t utf8 -r dir_path
注:LC_ALL
确认无误后:
$ convmv -f gbk -t utf8 -r dir_path --notest
4.内容乱码
1.iconv工具
$ iconv -f gbk -t utf-8 file1 -o file2 # gbk编码转换为utf-8
2.enca工具
enca会根据文件内容猜测编码,可以用于检测和转换文件的编码
# -L指明文件语言,一般可以省略
$ enca -L zh_CN file # 检查文件的编码
$ enca -L zh_CN -x UTF-8 file # 将文件编码转换为"UTF-8"编码
$ enca -L zh_CN -x UTF-8 <file1 >file2 # 如果不想覆盖原文件可以这样
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)