7、字符串编码
编码方式
|
ASCII
|
Unicode
|
UTF-8
|
---|---|---|---|
二进制表示字母'A'
|
01000001
|
00000000 01000001
|
01000001
|
二进制表示中文‘中
|
01001110 00101101
|
11100100 10111000 10101101
| |
十六进制形式
|
\u4e2d
|
b\xe4\xb8\xad
| |
编码范围
|
只有英文
|
所有语言
|
所有语言
|
一个字符占字节数
| 1 |
2(少数偏僻字4)
|
英文1,中文3(少数偏僻字4-6)
|
特点
|
统一,英文就在ASCII
前面补一个字节
|
节省,英文跟ASCII一样只有一个字节
| |
用处
|
内存中,服务器中,
比较统一
|
保存在硬盘时,传输时,需要节省
|
在计算机中所有的信息最终都表示为一个二进制的字符串,每一个二进制位有
0
和
1
两种状态,通过不同的排列组合,使用
0
和
1
就可以表示世界上所有的东
西。
在计算机种中,
1
字节对应
8
位二进制数,而每位二进制数有
0
、
1
两种状态,
因此
1
字节可以组合出
256
种状态。如果这
256
中状态每一个都对应一个符
号,就能通过
1
字节的数据表示
256
个字符。美国人于是就制定了一套编码
(其实就是个字典),描述英语中的字符和这
8
位二进制数的对应关系,这被
称为
ASCII
码。
ASCII
码一共定义了
128
个字符,例如大写的字母
A
是
65
(这是十进制数,对
应二进制是
0100 0001
)。这
128
个字符只使用了
8
位二进制数中的后面
7
位,最前面的一位统一规定为
0
。
但是随着计算机的全球普及,
128
个字符无法保存其他国家的字符。因此出现了
很多自己国家的编码,例如中国的
GB2312
编码
,
日本把日文编到
Shift_JIS
里,韩
国把韩文编到
Euckr
里。这样就解决了各个国家保存字符的问题。但是,如果在
中国使用
GB2312
编码写的内容,我们使用
U
盘拷一份去日本然后再使用日本的
电脑打开,就会出现乱码。为了解决这个问题,出现了
‘
万国码
’Unicode
。
Unicode
规定了世界上所有的字符都对应一个唯一的编号,但是没有规定在电脑
上怎么保存。例如
’
我
’
这个字符对应的编号是
‘12345’
,这个
‘12345’
这个编码具体
怎么在电脑上保存
(
占两个字节还是占三个字节
)Unicode
没有规定。
UTF8
编码是对
Unicode
的具体实现,
UTF8
规定了字符在电脑上的保存形式。
UTF8
最大特点就是可变长。它可以使用
1 4
个字节表示一个字符,根据字符
的不同变换长度。
英文还是占
1
个字节,中文占
3
个字节。
注
:
UTF8
编码实现了
ASCII
码的向后兼容,对于英文中的
0 127
号字符,与
ASCII
码完全相同。使用
ASCII
码编写的内容,使用
UTF8
同样能打开。