<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="Linux系统中文名称乱码问题的解决">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2023-04-18 09:54<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
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




如果/etc/locale.gen最后一行不是zh_CN.UTF-8 UTF-8, 用 &lsquo;dpkg-reconfigure locales&rsquo; 设置服务器的默认字符集为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 递归处理子文件夹

    &ndash;notest 真正进行操作，默认情况下是不对文件进行真实操作

    &ndash;list 显示所有支持的编码

    &ndash;unescap 可以做一下转义，比如把%20变成空格

    示例：

    convmv -f GBK -t UTF-8 --notest  *.mp3

    此命令将所有mp3的文件名转码




参考1  参考2  参考3


出现这种情况大部分是win系统上传中文文件造成的，win系统一般使用GBK，传到Linux系统上不会识别就成了乱码，甚至删不掉访问不了，就需要转换成UTF8这种Linux系统支持的，convmv就是把GBK转成了UTF8，从而可以访问。目前还仅限于winscp之类图形管理软件可以显示中文，终端还不能显示中文。


如果需要终端直接显示中文，需要编辑 /etc/profile，在文件的最后加上




XML/HTML代码


    export LC_ALL=&quot;zh_CN.UTF-8&quot;

    export LC_CTYPE=&quot;zh_CN.UTF-8&quot;

    export LANG=&quot;zh_CN.UTF-8&quot;





或者直接粘贴以下命令就可以直接生效




XML/HTML代码


    sed -i '$a \export LC_ALL=&quot;zh_CN.UTF-8&quot;' /etc/profile

    sed -i '$a \export LC_CTYPE=&quot;zh_CN.UTF-8&quot;' /etc/profile

    sed -i '$a \export LANG=&quot;zh_CN.UTF-8&quot;' /etc/profile

    source  /etc/profile






再使用命令 ls 就可以直接看到中文的文件名。简单来说就是 locale 命令切换 zh_CN.UTF-8  然后添加到系统变量，最后重新加载 profile 就可以。


也可以用懒人一键脚本：


Github：https://github.com/FunctionClub/LocaleCN




XML/HTML代码


    wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/LocaleCN/master/LocaleCN.sh &amp;&amp; bash LocaleCN.sh




一键脚本支持：Debian 8/9 Ubuntu 14/16 CentOS 6/7 ，理论上支持更高版本的系统，具体自测。
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
