编码格式说明及Unicode与utf-8互转

来源:互联网 发布:德国香肠 知乎 编辑:程序博客网 时间:2024/06/04 20:15
1、GB2312:又称国标码,规定:对任意一个图形字符都采用两个字节表示,每个字节均采用七位编码表示,习惯上称第一个字节为“高字节”,第二个字节为“低字节”

GB2312中汉字编码范围:  第一个字节: 0xB0--0xF7 对应十进制为:176-247;
第二个字节: 0xA0--0xFE 对应十进制为:160-254;
GB2312将代码表分为94个区,对应第一个字节(0xa1-0xfe);每个区94个位(0xa1-0xfe)对应第二个字节;

两个字节的值分别为区号值和位号值加32(20H),因此也成为区位码

编码范围:
1、01 -- 09 位符号,数字区;
2、16 -- 87 区位汉字区(0xb0-0xf7);
3、10 -- 15区、88 -- 94区有待进一步标准化的空白区。

2、Big5 又称大五码,即是一个繁体字编码
每个汉字由两个字节构成--1、第一字节范围:0x81-0xFE(129-255)共126种;
2、第二个字节范围不连续:0x40-0x7E(64-126)和0xA1-0xFE(161-254)共157种。

3、GBK 是GB2312的扩展,向下完全兼容GB2312;
每个字节仍然包含两个字节:
1、第一个字节范围:0x81-0xFE(129-254);
2、第二个字节范围:0x40-0xFE(64-254)。

GBK中有码位23940个,包含汉字21003个

Unicode:世界标准:为每个字符提供了唯一的特定数值;
有三套编码方式:
1、utf-8:保留了ASCII符的编码作为它的一个部分;用以解决国际上符号的一种多字节编码;它对英文使用八位(1个字节),对中文使用24位(3个字节);
2、utf-16;
3、uft-32。


utf-8与Unicode之间转化:

Unicode为双字节,而UTF-8中汉字占三个字节。
    UTF-8编码字符理论上可以最多到6个字节长,然而16位BMP(Basic Multilingual Plane)字符最多只用到3字节长。下面看一下UTF-8编码表:

        U-00000000 - U-0000007F: 0xxxxxxx 
        U-00000080 - U-000007FF: 110xxxxx 10xxxxxx 
        U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx 
        U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 
        U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 
        U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 

例如:牛 对应的Unicode编码为725B,对应的二进制位111001001011011
111001001011011
11100111    10001001     10011011 对应的utf-8编码为:牛