Linux系统中文名称乱码问题的解决
在Debian系统中,如果使用的是最小安装的系统,没有中文字库,一般先设置Debian服务器的字符集。
服务器字符集配置文件为/etc/locale.gen, 最后一行是服务器默认字符集编码
服务器默认字符集设置,一般就选一种,e.g. zh_CN.UTF-8 UTF-8
XML/HTML代码
- cat /etc/locale.gen
- ...
- # zh_TW.EUC-TW EUC-TW
- # zh_TW.UTF-8 UTF-8
- # zu_ZA ISO-8859-1
- # zu_ZA.UTF-8 UTF-8
- zh_CN.UTF-8 UTF-8
SecureCRT的字符集设置 Winscp文件名为utf8编码设置 参考 CSDN
如果上传到服务器或者看到的文件是乱码,可以试试convmv
XML/HTML代码
- sudo apt-get install convmv
XML/HTML代码
- convmv 使用方法:
- convmv -f 源编码 -t 新编码 [选项] 文件名
- 常用参数:
- -r 递归处理子文件夹
- –notest 真正进行操作,默认情况下是不对文件进行真实操作
- –list 显示所有支持的编码
- –unescap 可以做一下转义,比如把%20变成空格
- 示例:
- convmv -f GBK -t UTF-8 --notest *.mp3
- 此命令将所有mp3的文件名转码
出现这种情况大部分是win系统上传中文文件造成的,win系统一般使用GBK,传到Linux系统上不会识别就成了乱码,甚至删不掉访问不了,就需要转换成UTF8这种Linux系统支持的,convmv就是把GBK转成了UTF8,从而可以访问。目前还仅限于winscp之类图形管理软件可以显示中文,终端还不能显示中文。
如果需要终端直接显示中文,需要编辑 /etc/profile,在文件的最后加上
XML/HTML代码
- export LC_ALL="zh_CN.UTF-8"
- export LC_CTYPE="zh_CN.UTF-8"
- export LANG="zh_CN.UTF-8"
或者直接粘贴以下命令就可以直接生效
XML/HTML代码
- sed -i '$a \export LC_ALL="zh_CN.UTF-8"' /etc/profile
- sed -i '$a \export LC_CTYPE="zh_CN.UTF-8"' /etc/profile
- sed -i '$a \export LANG="zh_CN.UTF-8"' /etc/profile
- source /etc/profile
也可以用懒人一键脚本:
XML/HTML代码
- wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/LocaleCN/master/LocaleCN.sh && bash LocaleCN.sh