GBK、Unicode和UTF-8介绍

一、编码格式的出现顺序

ASCII ->GBK->Unicode->UTF-8

二、简介

ASCII是由8位组成单个字节来表示的编码,主要应用从0~127来表示英文文字。

而GBK则是在ASCII基础上为了适应中国的文字而衍生出来的。其中不管是汉字还是英文都会占用2个字节,即16为二进制数来表示。表示汉字时,其高位字节的首位(高位)会为1。而表示数字和英文时,其高位字节首位为0,且低位字节与ASCII一致。

Unicode则是由为了解决各地区编码格式不统一而出现的。其也由2个字节来表示,并采用国际标准化组织制定的标准来进行编码,并包含了各种语言,字母等。对于ASCII里英文字符,其保持原编码不变,只是将长度由原来的8位扩展为16位。由于原来ASCII的只需用到低位字节(低8位进制),故将其高位置为0。

UTF-8则是一种变长的编码格式,它可以使用1~4个字节来表示一个符号。

程序是把一个字节一个字节的来读取,然后再根据字节中开头的bit标志来识别是该把1个还是两个或三个字节做为一个单元来处理.

0xxxxxxx,如果是这样的01串,也就是以0开头后面是啥就不用管了XX代表任意bit.就表示把一个字节做为一个单元.就跟ASCII完全一样.

110xxxxx 10xxxxxx.如果是这样的格式,则把两个字节当一个单元

1110xxxx 10xxxxxx 10xxxxxx 如果是这种格式则是三个字节当一个单元.

由于UTF-8由于里面有额外的标志信息,所有一个字节只能表示2的7次方128个字符,两个字节只能表示2的11次方2048个字符.而三个字节能表示2的16次方,65536个字符.

下面来举例说明:如“汉”字的unicode编码的十进制表示为27721,则其两个字节不能够满足长度,故要用三个字节来表示。因此对于UTF-8编码格式来说,汉字需要占用3个字节,英文和数字占用1个字节。

综上所述,当存储的数据中,汉字占大多数时,可以使用GBK和Unicode编码格式,节省空间,效率较高。而存储的数据中,英文数据占绝大部分时,可以考虑使用UTF-8格式。


参考博客:https://blog.csdn.net/laojiu_/article/details/51736285


猜你喜欢

转载自blog.csdn.net/xjp8587/article/details/79758357