中文文件名乱码问题

出自Linux Wiki

在2012年1月2日 (一) 02:23由Chenxing (讨论 | 贡献)所做的修订版本
Note.gif
注意:
本文解决的是文件名或文件夹名的编码问题,要查看转换文件内容的选项,请参考iconv工具。

有时我们需要更改文件名的编码:

  • 在locale为UTF-8的系统中,解压含有中文文件名的zip文件,文件名出现乱码。
  • 将系统Local从GBK迁移到UTF-8
  • 遇到文件名乱码的其它情形
Note.gif
注意:
千万不要在NTFS或FAT文件系统上做此种操作,否则可能产生意外结果。如果要在Linux中正确显示NTFS和 FAT的中文件名,请参阅挂载Windows分区

convmv简介

convmv存在于常见操作系统的软件仓库中。如果当前没有工具,可以直接安装。

convmv -f 源编码 -t 新编码 [选项] 文件名

常见有用的选项有:

-r
递归处理子文件夹
--notest
真正进行操作,请注意在默认情况下是对文件进行真实操作的,而只是试验。
--unescape
可以做一下转义,比如把%20变成空格,如果你不知道这是在做什么,就不要尝试了。

实例

一般可解决解压zip而产生的中文文件名乱码的步骤:先试着将gbk文件名改为UTF-8:

convmv -f gbk -t utf8 -r MY_DIR

如果确认输出无误:

convmv --notest -f gbk -t utf8 -r MY_DIR
个人工具
简体繁体转换