HCRM博客

如何在CentOS系统中更改默认字符集?

CentOS字符集详解

一、字符编码和字符集

如何在CentOS系统中更改默认字符集?-图1
(图片来源网络,侵权删除)

1. 字符编码(Character Encoding)

字符编码是一种法则,用于在数字与符号之间建立对应关系,不同的国家有不同的语言,包含的文字、标点符号、图形符号各有不同,在ASCII编码中,用数字97表示字符'a',常见的字符编码有ASCII、GBK、GB18030和Unicode等。

1.1 ASCII编码

ASCII编码是最早的字符编码之一,主要用于显示现代英语和其他西欧语言,它基于拉丁字母,每个字符占用一个字节,共128个字符。

1.2 GBK编码

GBK编码是一种汉字编码标准,兼容GB2312,并扩展了更多汉字,它在双字节字符集中使用频繁,适用于简体中文。

如何在CentOS系统中更改默认字符集?-图2
(图片来源网络,侵权删除)

1.3 GB18030编码

GB18030编码是对GBK的扩展,增加了更多的汉字和符号,它使用变长多字节方式编码,可以表示几乎所有汉字。

1.4 Unicode编码

Unicode编码旨在涵盖世界上所有书写系统的字符,其常见变种包括UTF8、UTF16和UTF32:

UTF8:兼容ASCII编码,对英文字符使用一个字节,对其他字符使用2到4个字节。

UTF16:基本多文种平面使用两个字节,辅助平面使用四个字节。

如何在CentOS系统中更改默认字符集?-图3
(图片来源网络,侵权删除)

UTF32:所有字符均使用四个字节表示,空间利用效率低。

2. 字符集(Character Set

字符集是字符的集合,每个字符集包含的字符个数不同,常见的字符集名称包括ASCII、GB2312、GBK和UTF8等。

2.1 ASCII字符集

ASCII字符集包含控制字符和可打印字符,主要用于英语和其他西欧语言。

2.2 GB2312字符集

GB2312字符集包含大部分常用的简体汉字,已不能满足现代需求。

2.3 GBK字符集

GBK字符集是GB2312的扩展,增加了更多汉字和符号。

2.4 UTF8字符集

UTF8是一种针对Unicode的可变长度字符编码,广泛用于互联网数据传输。

国际编码(Unicode)

为了解决传统字符编码方案的局限,Unicode于1994年发布,Unicode统一了全球所有字符的编码,不再存在字符集不兼容和字符转换的问题。

二、汉字的编码

汉字的编码

支持汉字(简体中文)的编码有GB2312、GB13000、GBK、GB18030和Unicode(UTF8、UTF16、UTF32)。

1.1 GB2312编码

GB2312编码仅包含大部分常用简体汉字,已不能适应现代需求。

1.2 GB13000编码

由于GB2312的局限性,国家标准化委员会制定了GB13000编码,但由于兼容性问题未广泛推广。

1.3 GBK编码

GBK编码在GB2312基础上扩展,包含了更多汉字和符号,得到广泛应用。

1.4 GB18030编码

GB18030编码进一步扩展了GBK,增加了数千个汉字,但因使用变长多字节编码给软件开发带来难度。

1.5 Unicode编码

Unicode包含全世界所有国家需要的字符,是国际编码,通用性强。

汉字的编码选择

在操作系统和数据库中,常用的汉字编码有GBK、GB18030和Unicode,GBK和GB18030的优势在于占用空间小,而Unicode的优势在于全球化支持。

2.1 GBK和GB18030的优势

空间利用率高。

适用于简体中文环境。

2.2 Unicode的优势

全球化支持。

统一编码标准,消除乱码问题。

编码的转换

GBK和GB18030与Unicode编码之间需要转换,否则会出现汉字乱码,Linux提供了iconv命令进行编码转换。

三、设置Linux的字符集

查看当前系统已安装的字符集

使用locale命令查看当前系统全部已安装的字符集。

locale a

安装中文字符集

如果系统没有安装中文字符集,可以用以下命令安装:

yum groupinstall "fonts" y
yum install kdel10nChinese y
yum reinstall glibccommon y

安装完成后,可以通过以下命令查看已安装的中文字符集:

locale a | grep zh_CN

修改字符集配置文件

CentOS 7的字符集配置文件位于/etc/locale.conf,可以使用vi命令编辑该文件:

vi /etc/locale.conf

将文件中的相关语句修改为所需的字符集,如:

LANG="zh_CN.UTF8"

保存并退出后,执行以下命令使修改生效:

source /etc/locale.conf

LANG环境变量

LANG环境变量存放的是Linux系统的语言、地区、字符集,通过修改/etc/profile文件中的配置,可以设置系统的默认语言环境。

修改客户端的字符集

客户端的字符集必须与Linux服务端一致,否则会出现乱码,在使用SecureCRT时,可以在会话属性中设置字符编码。

字符集转换工具

Linux提供了iconv命令进行编码转换,将当前目录的book1.c由GBK转换成UTF8,结果输出到/tmp/book1_utf8.c中:

iconv f GBK t UTF8 book1.c o /tmp/book1_utf8.c

参数说明:

f encoding:源文件内容的编码。

t encoding:目标文件内容的编码。

o file:指定输出文件。

c:忽略输出的非法字符。

l:列出已知的编码字符集。

s:禁止警告信息,但不是错误信息。

verbose:显示进度信息。

四、应用经验

1、Linux系统在业务化之前应确定字符集,之后不再改变,避免后续修改带来的麻烦。

2、如果项目没有全球化需求,建议采用zh_CN.gbk字符集。

3、虽然gb18030字符集比gbk丰富,但因其部分汉字使用4字节表示,程序员更倾向于使用gbk。

4、设置Linux的字符集时,还需考虑WEB系统和数据库系统采用的字符集,保持一致性。

五、常见问题解答(FAQ)

Q1: 如何在CentOS 7中查看当前使用的字符集?

A1: 使用以下命令查看当前使用的字符集:

locale

或查看具体语言环境变量:

echo $LANG

Q2: 如何在CentOS 7中更改字符集?

A2: 通过修改/etc/locale.conf文件来更改字符集,编辑文件并修改相应的值,如:

vi /etc/locale.conf

修改为:

LANG="zh_CN.UTF8"

然后执行以下命令使修改生效:

source /etc/locale.conf

Q3: 如何在CentOS 7中安装中文字符集?

A3: 使用以下命令安装中文字符集:

yum groupinstall "fonts" y
yum install kdel10nChinese y
yum reinstall glibccommon y
分享:
扫描分享到社交APP
上一篇
下一篇