什么是系统字符编码呢?
因为计算机不能直接存储⽂字,存储的是编码。计算机只能处理⼆进制的数据。所以人为规定了一套“翻译”,这就是系统字符编码。
1.常见编码(了解就好)
- ASCII码:
美国发布的,用1个字节(8位⼆进制)来表示⼀个字符,共可以表示2^8=256个字符。
美国的国家语言是英语,只要能表示0-9、 a-z、 A-Z、特殊符号。
- ANSI编码:
每个国家为了显示本国的语言,都对ASCII码进行了扩展。用2个字节(16位⼆进制)来表示⼀个汉字,共可以表示 2^16= 65536个汉字。
中国的ANSI编码是GB2312编码(简体),对6763汉字进行编码,含600多特殊字符。另外还有GBK(简体)。
日本的ANSI编码是JIS编码。
中国台湾的ANSI编码是BIG5编码(繁体)。
- GBK:
对GB2312进行了扩展,⽤来显示罕见的、古汉语的汉字。现在已经收录了2.1万左右。并提供了1890个汉字码 位。 K的含义就是“扩展”。
- Unicode编码(统⼀编码):
⽤4个字节(32位⼆进制)来表示⼀个字符,想法不错,但效率太低。例如,字母A用ASCII表示的话⼀个字节就够,可用Unicode编码的话,得用4个字节表示,造成了空间的极大浪费。
- UTF-8(Unicode Transform Format)编码:
根据字符的不同,选择其编码的长度。比如:⼀个字符A用1个字节表示,⼀个汉字用2个字节表示。 毫无疑问,开发中都用UTF-8编码,准没错。
中⽂能够使用的字符集两种: 第⼀种: UTF-8。 UTF-8是国际通用字库,里面涵盖了所有地球上所有⼈类的语言文字,比如阿拉伯文、汉 语…… 第⼆种: GBK(对GB2312进行了扩展)。 gb2312 是国标,是中国的字库,里面仅涵盖了汉字和⼀些常用外文,比如日文片假名,和常见的符号。 字库规模: UTF-8(字很全) > gb2312(只有汉字)
数据存储大小
UTF-8和gb2312的比较,保存大小: UTF-8(更臃肿、加载更慢) > gb2312 (更小巧,加载更快)
总结:
UTF-8:字多,有各种国家的语言,但是保存尺寸大,文件臃肿;
gb2312:字少,只⽤中⽂和少数外语和符号,但是尺寸小,文件小巧。
2.localectl:系统字符编码调整方法
常用参数:
参数 | 解释说明 |
status | 查看显示目前的字符编码设置 |
set-locale LOCALE... | 设置系统的字符编码信息 |
list-locales | 列出系统已知的字符编码信息 |
调整系统的字符编码:
我们先看一下当前的字符编码设置是什么
localectl 或 localectl status
在切换字符集前,我们可以先查看有什么可以设置的字符集
localectl list-locales --查看可以设置的字符集
输入/,进入搜索,输入你需要的字符集,这里我想找中文的字符集,就输入zh,在一列zh开头的字符集中找到zh_CN.utf8,然后复制这一段。
使用命令,就切换成你需要的字符集了。
localectl set-locale LANG=zh_CN.utf8