Linux 修改系统编码

本文介绍了如何处理Linux服务器上出现的中文乱码问题,包括检查已安装的字符集、安装zh_CN.UTF-8字符集、设置系统默认字符集。通过修改`/etc/sysconfig/i18n`或`/etc/profile`文件,以及使用`dpkg-reconfigure locales`命令,可以将服务器的默认字符集改为zh_CN.UTF-8,从而避免网页和文件中的中文乱码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux服务器的字符集设置可能影响到网站页面出现 “???” 等问号乱码,还有可能导致文件中的汉字部分出现乱码。有两个原因

  1. 服务器没有安装 zh_CN.UTF-8 字符集,导致不支持中文!
  2. 服务器虽然装了 zh_CN.UTF-8 字符集,但是未设置成系统默认的字符集

查看 linux 安装的字符集

运行命令

locale -a

结果

C
C.UTF-8
POSIX

安装 zh_CN.UTF-8 字符集

# 安装 locales
apt-get install locales

# 安装 zh_CN.UTF-8 字符集
cd /usr/share/locales 
sudo ./install-language-pack zh_CN.UTF-8 

查看当前 Linux 字符集

# 执行这个命令,查看和语言编码有关的环境变量
locale

显示如下:

LANG=
LANGUAGE=en_US:en
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

可以看到大多数都默认为POSIX 类型的,这时可以改服务器的默认字符集为zh_CN.UTF-8(我测试过改了没问题哦,可以解决汉字乱码问题。如果能通过设置SecureCrt等终端可以解决的话,就没必要改了)

除了使用 locale 之外,还可以使用下列命令查看当前的字符集

1、# echo $LANG

2、# env |grep LANG

3、# export |grep LANG

设置当前 Linux 字符集

方法1:

vi /etc/sysconfig/i18n

# 默认为:
LANG="en_US.UTF-8"  
SYSFONT="latarcyrheb-sun16"

# 修改为:
LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"  
SYSFONT="latarcyrheb-sun16"

然后在不重启的情况下重新加载i18n文件

source /etc/sysconfig/i18n

方法2:

vi /etc/profile

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

方法3:可是化修改

dpkg-reconfigure locales  # 此命令会进入界面

在界面中,选中en_US.UTF-8和zh_CN.UTF-8 (点击空格键 为选中),然后tab键选中,回车键确认;进入最终确认页面,显示选中的编码,tab键选中,回车键确认。完成。

修改完显示

# 运行loacle
LANG=zh_CN.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

locale 详解

字段
1、 语言符号及其分类(LC_CTYPE)
2、 数字(LC_NUMERIC)
3、 比较和排序习惯(LC_COLLATE)
4、 时间显示格式(LC_TIME)
5、 货币单位(LC_MONETARY)
6、 信息主要是提示信息,错误信息, 状态信息, 标题, 标签, 按钮和菜单等(LC_MESSAGES)
7、 姓名书写方式(LC_NAME)
8、 地址书写方式(LC_ADDRESS)
9、 电话号码书写方式(LC_TELEPHONE)
10、度量衡表达方式(LC_MEASUREMENT)
11、默认纸张尺寸大小(LC_PAPER)
12、对locale自身包含信息的概述(LC_IDENTIFICATION)。
理解locale的设置

设定locale就是设定12大类的locale分类属性,即 12个LC_*。除了这12个变量可以设定以外,为了简便起见,还有两个变量:LC_ALL和LANG。

它们之间有一个优先级的关系:LC_ALL > LC_* > LANG

可以这么说,LC_ALL是最上级设定或者强制设定,而LANG是默认设定值。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值