检查当前系统编码
-
查看环境变量
终端执行:locale
若
LANG
或LC_CTYPE
非en_US.UTF-8
或zh_CN.UTF-8
,则需修改。 -
检查可用编码
locale -a | grep -i utf8
确认是否已安装UTF-8编码包(如未安装,需执行
sudo apt install locales
)。
修改系统全局编码
方法1:通过配置文件修改(永久生效)
- 编辑配置文件:
sudo nano /etc/default/locale
- 修改为以下内容:
LANG="en_US.UTF-8" # 英文系统推荐 # 或中文系统:LANG="zh_CN.UTF-8" LC_ALL="en_US.UTF-8"
- 更新配置:
sudo locale-gen en_US.UTF-8 # 生成指定编码 sudo update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
方法2:临时修改(重启失效)
export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8
终端与SSH客户端设置
-
终端工具调整
- Xshell/MobaXterm:会话属性 → 终端 → 编码选择 “UTF-8”。
- PuTTY:Connection → Data → “Received data assumed to be in” 选 “UTF-8″。
-
确保终端模拟器支持UTF-8
在终端内执行:echo $TERM
若为
xterm
,需启用UTF-8支持(一般现代终端默认支持)。
编码转换
若现有文件为其他编码(如GBK),需批量转码:
- 安装转码工具:
sudo apt install iconv # Debian/Ubuntu sudo yum install iconv # CentOS/RHEL
- 批量转换文件编码(示例将GBK转UTF-8):
find /path/to/files -type f -exec iconv -f GBK -t UTF-8 {} -o {}.utf8 \;
关键服务配置
-
MySQL/MariaDB
在/etc/mysql/my.cnf
中添加:[client] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
-
Apache/Nginx
在虚拟主机配置中增加:charset utf-8; add_header "Content-Type" "text/html; charset=utf-8";
验证与故障排除
- 验证系统编码
locale # 应显示UTF-8 echo '测试文字' > test.txt # 创建中文文件 cat test.txt # 正常显示无乱码
- 常见问题
- 乱码依旧存在:检查终端工具、SSH客户端、文件原始编码是否一致。
- 服务未生效:重启服务(如
sudo systemctl restart nginx
)。 - 系统警告:运行
sudo dpkg-reconfigure locales
重新配置编码包。
注意事项
- 操作前备份重要数据及配置文件。
- 服务器环境建议使用
en_US.UTF-8
,桌面用户可用zh_CN.UTF-8
。 - UTF-8与UTF8MB4的区别:后者支持4字节字符(如表情符号),数据库场景优先选UTF8MB4。
引用说明:本文操作基于Linux标准文档(man pages)、Unicode Consortium技术建议及主流发行版(Ubuntu/CentOS)官方手册,关键工具参考GNU Coreutils和IANA字符集规范。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4462.html