UTF-8 GBK

来源:互联网 发布:软件销售ppt 编辑:程序博客网 时间:2024/05/22 08:16

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。UTF-8用1到6个字节编码UNICODE字符。

ASCII的7位字符集,它是美国标准信息交换代码(American Standard Code for Information Interchange)的缩写, 为美国英语通信所设计。它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)组成。

UNICODE字符集。它通过增加一个高字节(共两个字节)对ASCII字符集进行扩展,当高字节位为0时,低字节就是ASCII字符。Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

UTF(Universal Transformation Format)通用转换格式。常见的UTF格式有:UTF-7, UTF-7.5, UTF-8,UTF-16, 以及UTF-32。

UTF-8是Unicode的实现方式(编码方式)之一。

 

UTF-8是一种变长字节编码方式。UTF-8最多可用到6个字节。
如表:
1字节 0xxxxxxx
2字节 110xxxxx 10xxxxxx
3字节 1110xxxx 10xxxxxx 10xxxxxx
4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

UTF-8的编码规则很简单,只有二条:

1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。

2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

 

UTF8可以容纳31位二进制数字。Unicode的最大码位0x7FFFFFFF也只有31位。

 

  1. GB2312简体中文的编码格式, 只支持6763个常用汉字;
  2. GBK是GB2312基础上扩容后兼容GB2312的标准,包含全部中文字符,支持简体中文及繁体中文;
  3. GBK通用性比UTF8差,不过UTF8占用的数据库比GBK大;
  4. GB2312、GBK都属于双字节字符集 ;

GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换    ,也即:   
GBK、GB2312 ---> Unicode ---> UTF-8    
UTF8 ---> Unicode ---> GBK、GB2312

 

汉字UNICODE编码表http://www.chi2ko.com/tool/CJK.htm

 

字符集(character set)和字符编码(character encoding)的混淆

 

GBK即汉字内码扩展规范,是「国家标准扩展」三个词的拼音缩写

 

 由于GBK到Unicode的汉字没有直接的映射关系,传说GBK是按拼音排序,Unicode是按部首排序的。所以要转换之前必须得有个对照表。

GBK与UNICODE互转算法http://blog.csdn.net/tge7618291/article/details/7608510

 

0 0