附上常用编码方式的在线查看和相互转换工具链接
http://www.jb51.net/tools/zhuanhuan.htm
ASCII字符集 是美国制订的标准,针对北美用户开发。它使用7个二进制位编码,可以表示128个字符。局限性:字符空间有限。 各国针对本国文字设计编码集,如简体中文的GB系列编码。
为了一劳永逸地解决各国文字间的统一,业界许多大公司和组织联合提出了一个标准,这就是Unicode。
它对字符集中的每个字符用两个字节长的ID号进行编码,从而规定出一个可容纳多达65536个字符的编码空间,并且将现今国际上各国编码中的常用字尽数收入罄中。
但是,Unicode在推广过程中却遭到了首先是欧美用户的反对。他们反对的理由非常简单:欧美用户原本使用的编码都是单字节长的,双字节的Unicode处理引擎无法处理原本的单字节数据;而如果要把现有的单字节文本全部转换成Unicode,工作量就太大了。
于是在各方磋商之下,一个Unicode的变种版本产生了,这就是UTF-8。UTF-8是一个多字节的编码体系,它的编码规则如下:
1、UTF-8编码分为四个区:
一区为单字节编码,
编码格式为:0xxxxxxx;
对应Unicode:0x0000 - 0x007f
二区为双字节编码,
编码格式为:110xxxxx 10xxxxxx;
对应Unicode:0x0080 - 0x07ff
三区为三字节编码,
编码格式为:1110xxxx 10xxxxxxx 10xxxxxx
对应Unicode:0x0800 - 0xffff
四区为四字节编码,
编码格式为:11110xxx 10xxxxxxx 10xxxxxx 10xxxxxx
对应Unicode:0x00010000 - 0x0001ffff
五区为五字节编码,
编码格式为:111110xx 10xxxxxxx 10xxxxxxx 10xxxxxxx 10xxxxxxx
对应Unicode:0x00200000 - 0x03ffffff
六区为六字节编码,
编码格式为:111110x 10xxxxxxx 10xxxxxxx 10xxxxxxx 10xxxxxxx 10xxxxxxx
对应Unicode:0x04000000 - 0x7fffffff
一区为单字节编码,
编码格式为:0xxxxxxx;
对应Unicode:0x0000 - 0x007f
二区为双字节编码,
编码格式为:110xxxxx 10xxxxxx;
对应Unicode:0x0080 - 0x07ff
三区为三字节编码,
编码格式为:1110xxxx 10xxxxxxx 10xxxxxx
对应Unicode:0x0800 - 0xffff
四区为四字节编码,
编码格式为:11110xxx 10xxxxxxx 10xxxxxx 10xxxxxx
对应Unicode:0x00010000 - 0x0001ffff
五区为五字节编码,
编码格式为:111110xx 10xxxxxxx 10xxxxxxx 10xxxxxxx 10xxxxxxx
对应Unicode:0x00200000 - 0x03ffffff
六区为六字节编码,
编码格式为:111110x 10xxxxxxx 10xxxxxxx 10xxxxxxx 10xxxxxxx 10xxxxxxx
对应Unicode:0x04000000 - 0x7fffffff
按照UTF-8编码规则我们不难发现,其一区的128个编码实际上就是ASCII编码。所以UTF-8的处理引擎可以直接处理ASCII文本。但是,UTF-8对ASCII编码的兼容是以牺牲其它编码为代价的。比如,原本中、日、韩三国文字基本上都是双字节编码,但它们在Unicode编码中的位置对应到UTF-8中的三区,每一个字符编码要三个字节长。换句话说,如果我们把所有现有的中、日、韩三国编码的非ASCII字符文本数据转换成UTF-8编码,则其大小都会变成原来的1.5倍。