UTF8 编码方式,以及GB2312、Unicode、UCS等编码介绍。

先介绍一下各种编码方式的,再详细说下utf8的编码规则。


1、GB2312 系列(Big5 GBK GB18030)
早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族
文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多
的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到
GB18030都属于双字节字符集 (DBCS)。

2、Unicode utf
"Universal Multiple-Octet Coded Character Set",简称为UCS,旨在容纳世界上所有语言文字的编码方案。Unicode一般用2个字节表示一个字符,也有用四个自己,分别为ucs2和ucs4.但是其和之前ascii是完全两套方案。后来为了与ascii兼容,于是有了utf。utf也是旨在容纳所有语言的编码方式,和Unicode不同,它每一个字符占的字节数是不一样的,根据最高位不同取址判断编码位数,有点haffman编码的意思。但是对于ascii的字符和之前的一样,都是占一个字节。


3、UTF的编码规则
UTF有UTF-8、UTF-7、UTF-16,我们常用就是UTF-8,UTF-7和UTF-16,暂时还没有开始研究。UTF8编码规则如下:
UTF-8,某种意义上从ucs4而来,看下面编码规则。
UCS-4 range (hex.) UTF-8 octet sequence (binary)
0000 0000-0000 007F 0xxxxxxx
0000 0080-0000 07FF 110xxxxx 10xxxxxx
0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-001F FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0020 0000-03FF FFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0400 0000-7FFF FFFF 1111110x 10xxxxxx ... 10xxxxxx
看这个表就很明显了,它首先判断范围,决定用几位存储。然后把位数从低到高填充。
举一个例子
152,0x98,二进制10011000,0000 0080-0000 07FF。总共8位,需要2个字节,一个字节存6位,一个字节存2位。
就是110(00 0010) 10(011000),括号外面是前缀,括号里面红色的就是数据了。解码也一样。

你可能感兴趣的:(嵌入式,存储,扩展,语言,character,图形)