WenRou's Blog
Linux中文文件名乱码问题
2013-9-27 温柔哥

Linux中文文件名乱码问题



中文文件名乱码产生的原因有二:一是挂载NTFS或FAT文件系统时,编码指定不正确导致乱码(或问号);二是在文件系统中文件名存储的编码不正确,导致乱码。二者分别讨论:


NTFS/FAT上的文件名乱码



如果正在用的Linux系统locale是UTF-8,只需在mount FAT文件系统时加上utf8参数,在mount NTFS文件系统时加上nls=utf8即可,如下例子fstab:





其它情况


有时中文文件名显示为乱码,通常可以通过转换文件名 有时我们需要更改文件名的编码:



  • 在locale为UTF-8的系统中,解压含有中文文件名的zip文件,文件名出现乱码。
  • 将系统Local从GBK迁移到UTF-8
  • 遇到文件名乱码的其它情形


注意:

千万不要在NTFS或FAT文件系统上执行convmv,否则极可能产生意外结果。

convmv简介


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



常见有用的选项有:


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

实例


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



如果确认输出无误:




发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容