后端编码方式大全
各类编码方式介绍
1.编码
①计算机只能识别0和1,但是人类通过0和1来识别一串文本较为不便,因此约定某个二进制数表示一个指定的字符,这样在N个字符与N个二进制数之间建立映射关系,
这N个字符就是人类日常使用的字符集,而这种映射关系称为字符编码,其产物为字符编码表。计算机可以根据字符编码表接收、传递、展示人类能识别的字符集。
②字符编码表中一般包含可显示字符(如字母、数字、标点符号、运算符号等)和控制字符(换行符、退格符等)。
③字符编码方案可分为单字节、双字节、三字节等,能储存的字符集数量依次增加。单字节编码是使用一个8位二进制数表示一个字符,
双字节编码是使用一个16位二进制数表示一个字符。
2.ASCII
①美国信息交换标准代码(American Standard Code for Information Interchange),是美国国家标准会制定的单字节字符编码方案。
②ASCII用8位二进制数表示,其中最高位为0,用剩下的7位排列位组合来表示128个字符。
③ASCII一共定义了128个字符,包括95个可显示字符(52个英文大小写字母,10个阿拉伯数字,33个英文常用标点符号、运算符号等)、
33个控制字符。(ASCII码对照表)
④ASCII存在一定的局限性,它只能表示英语,不能表示法语、俄语等。
3.EASCII
①延伸美国标准信息交换码(Extended ASCII),是将ASCII码由7位扩充为8位而成,共有256个字符。
②EASCII相较ASCII增加了表格符号、计算符号、希腊字母和特殊的拉丁符号。(EASCII码对照表)
4.GB2312
①信息交换用汉字编码字符集(GB代表”国标”),用于汉字处理、汉字通信等系统之间的信息交换。(GB2312对照表)
②GB2312一共定义了7445个字符,其中一级汉字3755个,二级汉字3008个,拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母682个。
③GB2312向下兼容ASCII,但是并不包括ASCII中的字符(如果一个字符在ASCII中,则使用单字节ASCII方式编码,否则使用GB2312方式编码)。
④GB2312将所有字符进行分区管理,共划分94个区(目前只用到了01~87区),每个区可以包含94个字符。因此定位一个字符需要使用16进制的区位码(标识字符在第几分区的第几位)。
⑤GB2312采用双字节编码,第一个字节表示区码,第二个字节表示位码。为了兼容ASCII,将区码和位码加160后再进行计算。(为什么?)
例如:'帅'在第43区,第07位
区码:43 + 160 = 203 = 11001011 = CB 最终二进制码:1100101110100111
位码:07 + 160 = 167 = 10100111 = A7 最终GB2312区位码:CBA7
5.GBK
①汉字内码扩展规范(GB代表”国标”,K代表”扩展”),GBK是GB2312的扩展版,共定义了21886个汉字和图形符号。
②GBK相较GB2312增加了繁体汉字、CJK汉字(中日韩统一表意文字)等。
③GBK采用双字节编码,共分为汉字区、图形符号区、用户自定义区。
6.Unicode
①统一码、万国码、单一码,可以理解为人类使用的所有字符的集合(官网)。
②Unicode为世界上每种语言中的每个字符设定了统一并且唯一的二进制码,以满足跨语言、跨平台进行文本转换、处理的要求。
③Unicode只是一个字符集,仅仅定义了字符与二进制编号的映射关系。
④Unicode编号从 0x000000 到 0x10FFFF,一共可以容纳1114112个字符,但是目前只定义了143859个字符(Unicode13.0,2020-03-10发布)。
⑤为了便于管理,Unicode将所有字符分为17个平面(00~17),每个平面包含65536个字符(0~65535)。
⑥Unicode用U+XXXXX表示,例如“帅”是第24069个字符,表示为U+5E05。
7.UTF-8
①8-bit Unicode Transformation Format,八位Unicode转换格式。
②Unicode仅仅是个字符集,而UTF-8则是一种编码方案。它定义了如何将Unicode编号转换为字节序列。
③8是指以8位(一个字节)为可变长单位,UTF-8可将Unicode编号编码为1~4个字节的二进制序列。
④由于互联网中大多数内容是英文,而UTF-8对英文编码只需一个字节,耗费空间较小,所以目前UTF-8较为通用。