字符编码之ASCII、UTF-8、UTF-16的区别
ASCII编码
根据百度百科整理的^_^
在计算机中,所有的数据在存储和运算时都要使⽤⼆进制数表⽰(因为计算机⽤⾼电平和低电平分别表⽰1和0),例如,像a、b、c、d这样的52个字母(包括⼤写)、以及0、1等数字还有⼀些常⽤的符号(例如*、#、@等)在计算机中存储时也要使⽤⼆进制数来表⽰,⽽具体⽤哪些⼆进制数字表⽰哪个符号,当然每个⼈都可以约定⾃⼰的⼀套(这就叫编码),⽽⼤家如果要想互相通信⽽不造成混乱,那么⼤家就必须使⽤相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统⼀规定了上述常⽤符号⽤哪些⼆进制数来表⽰。
ASCII 码使⽤指定的7 位或8 位⼆进制数组合来表⽰128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使⽤7 位⼆进制数(剩下的1位⼆进制为0)来表⽰所有的⼤写和⼩写字母,数字0 到9、标点符号, 以及在美式英语中使⽤的特殊控制字符。其中:
0~31及127(共33个)是控制字符或通信专⽤字符(其余为可显⽰字符),如控制符:LF(换⾏)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专⽤字符:SOH(⽂头)
、EOT(⽂尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换⾏和回车字符。它们并没有特定的图形显⽰,但会依不同的应⽤程序,⽽对⽂本显⽰有不同的影响。
32~126(共95个)是字符(32是空格),其中48~57为0到9⼗个阿拉伯数字。
65~90为26个⼤写英⽂字母,97~122号为26个⼩写英⽂字母,其余为⼀些标点符号、运算符号等。
编码表如下:
计算机刚出现时,这种编码确实够⽤了,但是当中⽂还有其他语⾔加⼊到计算机中时,明显就不能表⽰了,所以Unicode编码就应运⽽⽣了。
Unicode是国际组织制定的可以容纳世界上所有⽂字和符号的字符编码⽅案。⽬前的Unicode字符分为17组编排,0x0000 ⾄
unicode码和ascii码区别0x10FFFF,每组称为平⾯(Plane),⽽每平⾯拥有65536个码位,共1114112个。然⽽⽬前只⽤了少数平⾯。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码⽅案。
UTF-8
UTF-8以字节为单位对Unicode进⾏编码。从Unicode到UTF-8的编码⽅式如下:
UTF-8的特点是对不同范围的字符使⽤不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与A
SCII编码完全相同。UTF-8编码的最⼤长度是6个字节。从上表可以看出,6字节模板有31个x,即可以容纳31位⼆进制数字。Unicode的最⼤码位0x7FFFFFFF也只有31位。
UTF-16
UTF-16编码是以16位⽆符号整型数据为单位的。能够对Unicode的所有1,112,064个有效代码点进⾏编码。编码是可变长度的,因为编码点是⽤⼀个或两个16位代码单元编码的。
Unicode编码0x10000-0x10FFFF的UTF-16编码有两个WORD(⼀个8位叫做字节,⼀个16位称为⼀个字,或者双字节),第⼀个WORD的⾼6位是110110,第⼆个WORD的⾼6位是110111。可见,第⼀个WORD的取值范围(⼆进制)是11011000 00000000到11011011 11111111,即0xD800-0xDBFF。第⼆个WORD的取值范围(⼆进制)是11011100 00000000到11011111 11111111,即0xDC00-0xDFFF。
我理解的就这么多了,继续前进!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论