Linux 中文乱码.md 3.5 KB

在 Linux 系统中解决中文乱码问题通常需要检查系统编码配置、字体支持、终端设置等多个环节。以下是分步解决方案:


一、检查系统 Locale 设置

Locale 决定了系统使用的语言和编码格式。确保已正确配置中文 UTF-8 环境。

1. 查看当前 Locale

locale

检查 LANGLC_CTYPE 等变量是否为 zh_CN.UTF-8en_US.UTF-8

2. 安装中文语言包

  • Debian/Ubuntu:

    sudo apt install language-pack-zh-hans
    
  • CentOS/RHEL:

    sudo yum install glibc-common langpacks-zh_CN
    

3. 生成并配置 Locale

sudo dpkg-reconfigure locales  # Debian/Ubuntu
# 或
sudo localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8  # CentOS/RHEL

在列表中选择 zh_CN.UTF-8

4. 修改环境变量

~/.bashrc/etc/environment 中添加:

export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

生效配置:

source ~/.bashrc

二、安装中文字体

系统若缺少中文字体,可能导致图形界面或终端显示乱码。

1. 安装常用字体

  • 文泉驿字体

    sudo apt install fonts-wqy-microhei  # Debian/Ubuntu
    sudo yum install wqy-microhei-fonts  # CentOS/RHEL
    
  • Noto 字体

    sudo apt install fonts-noto-cjk  # Debian/Ubuntu
    sudo yum install google-noto-sans-cjk-ttc-fonts  # CentOS/RHEL
    

2. 刷新字体缓存

fc-cache -fv

三、配置终端编码

确保终端工具(如 GNOME Terminal、Konsole、xterm)使用 UTF-8 编码。

1. 设置终端编码

  • GNOME Terminal:菜单栏 > 首选项 > 当前配置文件 > 兼容性 > 字符编码 > Unicode (UTF-8)。
  • Konsole:设置 > 编辑当前配置文件 > 常规 > 字符编码 > UTF-8。
  • 远程工具(如 PuTTY):Connection > Data > 设置 "Received data assumed to be in UTF-8"。

2. 临时切换终端编码

export LANG=zh_CN.UTF-8

四、处理文件编码问题

1. 转换文件编码

使用 iconv 转换文件编码(如 GBK → UTF-8):

iconv -f GBK -t UTF-8 input.txt -o output.txt

2. 配置文本编辑器

  • Vim:在 ~/.vimrc 中添加:

    set fileencodings=utf-8,gbk,gb2312,big5
    
  • Nano:启动时指定编码:

    nano --utf8 filename
    

五、SSH 客户端乱码

若通过 SSH 连接服务器出现乱码,检查客户端编码设置:

  • PuTTY:设置窗口左侧选择 Window > Translation > Remote character set: UTF-8。
  • SecureCRT:Options > Session Options > Appearance > Character encoding: UTF-8。

六、数据库中文乱码

MySQL/MariaDB

  1. 修改配置文件 /etc/mysql/my.cnf

    [client]
    default-character-set = utf8mb4
    [mysqld]
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    
  2. 重启服务:

    sudo systemctl restart mysql
    

七、应用程序特定配置

1. Java 程序

添加 JVM 参数:

java -Dfile.encoding=UTF-8 ...

2. Tomcat

修改 conf/server.xml

<Connector port="8080" URIEncoding="UTF-8" ... />

八、验证修复

  1. 生成测试文件:

    echo "中文测试" > test.txt
    cat test.txt
    
  2. 若正常显示,则配置成功。


通过以上步骤,可覆盖大多数中文乱码场景。若问题仍存在,请检查具体软件(如 IDE、浏览器)的编码设置。