Linux系统中文名称乱码问题的解决

Linux系统中文名称乱码问题的解决

在Debian系统中,如果使用的是最小安装的系统,没有中文字库,一般先设置Debian服务器的字符集。
服务器字符集配置文件为/etc/locale.gen, 最后一行是服务器默认字符集编码
服务器默认字符集设置,一般就选一种,e.g. zh_CN.UTF-8 UTF-8
XML/HTML代码
  1. cat /etc/locale.gen  
  2. ...  
  3. # zh_TW.EUC-TW EUC-TW  
  4. # zh_TW.UTF-8 UTF-8  
  5. # zu_ZA ISO-8859-1  
  6. # zu_ZA.UTF-8 UTF-8  
  7. zh_CN.UTF-8 UTF-8  
如果/etc/locale.gen最后一行不是zh_CN.UTF-8 UTF-8, 用 ‘dpkg-reconfigure locales’ 设置服务器的默认字符集为zh_CN.UTF-8 UTF-8, 可能要重新启动服务器才生效。
SecureCRT的字符集设置 Winscp文件名为utf8编码设置 参考 CSDN
如果上传到服务器或者看到的文件是乱码,可以试试convmv
XML/HTML代码
  1. sudo apt-get install convmv  
为了保险起见,先备份一下要转换的文件夹
XML/HTML代码
  1. convmv 使用方法:  
  2. convmv -f 源编码 -t 新编码 [选项] 文件名  
  3. 常用参数:  
  4. -r 递归处理子文件夹  
  5. –notest 真正进行操作,默认情况下是不对文件进行真实操作  
  6. –list 显示所有支持的编码  
  7. –unescap 可以做一下转义,比如把%20变成空格  
  8. 示例:  
  9. convmv -f GBK -t UTF-8 --notest  *.mp3  
  10. 此命令将所有mp3的文件名转码  
参考1  参考2  参考3
出现这种情况大部分是win系统上传中文文件造成的,win系统一般使用GBK,传到Linux系统上不会识别就成了乱码,甚至删不掉访问不了,就需要转换成UTF8这种Linux系统支持的,convmv就是把GBK转成了UTF8,从而可以访问。目前还仅限于winscp之类图形管理软件可以显示中文,终端还不能显示中文。
如果需要终端直接显示中文,需要编辑 /etc/profile,在文件的最后加上
XML/HTML代码
  1. export LC_ALL="zh_CN.UTF-8"  
  2. export LC_CTYPE="zh_CN.UTF-8"  
  3. export LANG="zh_CN.UTF-8"  
或者直接粘贴以下命令就可以直接生效
XML/HTML代码
  1. sed -i '$a \export LC_ALL="zh_CN.UTF-8"' /etc/profile  
  2. sed -i '$a \export LC_CTYPE="zh_CN.UTF-8"' /etc/profile  
  3. sed -i '$a \export LANG="zh_CN.UTF-8"' /etc/profile  
  4. source  /etc/profile  
再使用命令 ls 就可以直接看到中文的文件名。简单来说就是 locale 命令切换 zh_CN.UTF-8  然后添加到系统变量,最后重新加载 profile 就可以。

上一篇: Docker版lnmp
下一篇: TurnKey Linux系统安装后简单优化

访客评论
目前还没有人评论,您发表点看法?
发表评论

评论内容 (必填):