目录
目录X
联系信息 首页 /正文内容

Linux 中文文件名乱码修复全过程记录

一、问题背景

在 Linux 服务器上部署网站文件时,发现目录中的部分文件名出现乱码,形如:

'$'\311\347\273\341\267\376\316\361''.pdf' 
'$'\263''ɹ'$'\373\261\263\276\260\323\353\316\312\314\342''.docx'


这些文件实际是从 Windows 系统上传的中文文件,而 Windows 使用 GBK 编码,而服务器系统是 UTF-8 编码,导致文件名显示乱码。


二、系统环境

执行命令查看当前系统语言环境:

locale


输出:

LANG=en_US.UTF-8 
LC_CTYPE="en_US.UTF-8" 
...


说明系统使用的是 UTF-8 编码。


三、安装文件名编码转换工具 convmv

convmv 是专门用于转换文件名编码的工具。
如果系统未安装,可执行以下命令安装:

yum install convmv -y



四、首次测试转换(dry-run)

在目标目录中(例如 /data/www/webfuture/wwwroot/jxcg),执行:

cd /data/www/webfuture/wwwroot/jxcg 
convmv -r -f GBK -t UTF-8 .


含义说明:

  • -r:递归处理子目录;

  • -f GBK:源文件名编码(原来是 GBK);

  • -t UTF-8:目标编码;

  • .:当前目录;

  • 不加 --notest 表示测试模式(dry run,不实际修改)。

输出示例:

Starting a dry run without changes... 
mv "./▒ɹ▒▒▒.png" -> "./成果简介.png" 
mv "./▒˲▒▒▒▒▒.pdf" -> "./人才培养.pdf" 
... 
No changes to your files done. Would have converted 52 files in 0 seconds. 
Use --notest to finally rename the files.


说明 convmv 成功识别出乱码文件的原始中文名称,模拟改名结果正确。


五、正式执行转换

确认测试结果无误后,执行正式转换命令:

convmv -r -f GBK -t UTF-8 --notest .


此命令将真正重命名文件,修复乱码。执行后会输出:

Starting conversion... 
mv "./▒ɹ▒▒▒.png" -> "./成果简介.png" 
mv "./▒˲▒▒▒▒▒.pdf" -> "./人才培养.pdf" 
... 
Ready!



六、验证结果

执行:

ls


输出结果显示所有中文文件名已恢复正常:

成果简介.docx          人才培养.pdf
...


【打印正文】 发布时间:2025-10-30 16:17:49 浏览次数: 作者: 来源:本站原创