您的位置:首页 > 其它

常见字符编码简介:ASCII、Unicode、UTF-8、UTF16

2017-02-05 18:49 309 查看
一、字符集(Charset)

字符:各种文字和符号的总称。包括各国家文字、标点符号、图形符号、数学等。

字符集:一个系统支持的所有字符的集合。

二、字符编码(Character Encoding)

计算机只能识别处理数字,若要处理文本,需先将文本字符转换为计算机可以接受的数字代码。即字符集和实际存储数值之间的转换关系。

三、常见几种编码方式

ASCII字符集、GB2312字符集、Unicode字符集、UTF-8、

3.1 ASCII

由于计算机是美国人发明的,因此,最早只有127个字符(大小写英文字母、数字和一些特殊符号)被编码到计算机里,于是最初设计时,采用8bit(1字节)来存储字符编码。如大写字母'A'的ASCII码为65,小写字母‘z’的ASCII码为122。但是8bit只能表示0-255,如果要表示更多的字符,就必须用更多的字节。

3.2 GB2312

后来世界各国都开始使用计算机。但是要处理中文,一个字节显然不够,所以中国扩展ASCII编码制定了GB2312,用来把中文字符编进去。

GB2312规定:一个小于127的字符的意义与ASCII相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。GB2312是对ASCII的中文扩展。

但是中文的汉字太多了,后来还是不够用,于是干脆不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容。结果扩展之后的编码方案被称为 GBK 标准,GBK包括了GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。 

后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK扩成了 GB18030

3.3 Unicode

全世界上百种语言,各国都制定了自己的编码标准。但是在多语言混合的文本中,显示会有乱码。

于是,Unicode应运而生。将所有的语言都统一到一套编码方案里。Unicode统一用两个字节表示一个字符,无论是英文字符还是中文字符。Unicode表示英文保持其原编码不变,只是将其长度由8位扩展为16位。

3.4 UTF-8

采用Unicode编码方式时,若所需处理的文本基本上全部为英文,则会比用ASCII编码多用一倍的存储空间。在存储和传输时就十分的不方便。

所以,本着节约精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。这是为传输而设计的编码。

UTF-8是ASCII的一个超集,采用1-6个字节表示一个字符。常见英文字母1字节,中文汉字3个字节。只有很生僻的字符才编码成4-6个字节。设计原则如下:

单字节的字符,字节的第一位设为0,对于英语文本,UTF-8码只占用一个字节,和ASCII码完全相同;
n个字节的字符(n>1),第一个字节的前n位设为1,第n+1位设为0,后面字节的前两位都设为10,这n个字节的其余空位填充该字符unicode码,高位用0补足。

这样就形成了如下的UTF-8标记位:

0xxxxxxx

110xxxxx 10xxxxxx

1110xxxx 10xxxxxx 10xxxxxx

11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

比如:大写字母I和中文汉字知的表示如下,

I    01001001
知 11100111 10011111 10100101

四、总结

ASCII编码:用来表示英文,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。
拓展ASCII编码:用于表示更多的欧洲文字,用8个位存储数据,一共可以表示256个字符
GBK/GB2312/GB18030:表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。
Unicode编码:包含世界上所有的字符,是一个字符集。
UTF-8:是Unicode字符的实现方式之一,它使用1-6个字符表示一个符号,根据不同的符号而变化字节长度。

参考:
http://www.cnblogs.com/yuguangchuan/p/4310952.html https://www.zhihu.com/question/23374078 http://blog.csdn.net/csywwx2008/article/details/17137097 http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html


学习顺利~笑口常开~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息