unicode和utf-8,gbk之间的转换与关系
2012-10-30 19:37
399 查看
utf-8编码转换为unicode编码:
Unicode是一个字符集,而UTF-8是Unicode的其中一种,Unicode是定长的都为双字节,而UTF-8是可变的(1-6个字节不等)。
下面是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
开头1的个数代表字符的字节数(第一列为了兼容ASCII字符)
下面分析一下如何将一个unicode中文的编码如何转换为utf-8的编码:
假设Unicode中汉字“你”的编码为“u5E05",转化为二进制为0101,1110,0000,0101 ,可以将Unicode二进制从低往高取出二进制,每次取6位,得到的3组二进制依次带入上述的utf-8的编码表(第3行):得到 11100101, 10111000,10000101 即得到utf-8的编码为E5B885。
即是: 0101,1110,0000,0101 分3段 0101 , 111000, 000101,
0101,1110,0000,0101 >>(右移) 12 ==> 0101 |(或) 11100000 ==>11100101
0101,1110,0000,0101 >> 6 ==> 0101,1110,00 &(与) 00111111 ==> 00111000 | 10000000 ==> 10111000
0101,1110,0000,0101 & 00111111 ==> 000101 | 10000000 => 10000101
得到的ut8编码的二进制 10111000 10000101 === E5B885
同样要将utf-8转换为unicode编码:你的utf-8编码为E5B885,转化为二进制11100101, 10111000,10000101,可以判断它占3个字节,即:将11100101, 10111000,10000101 => 0101,1110,0000,0101。
11100101 与 00011111 求与 =》 101
10111000 与 00111111 求与 =》 111000
10000101 与 00111111 求与 =》 000101,
得到unicode 编码的二进制 101111000000101 === u5E05 ;
Unicode是一个字符集,而UTF-8是Unicode的其中一种,Unicode是定长的都为双字节,而UTF-8是可变的(1-6个字节不等)。
下面是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
开头1的个数代表字符的字节数(第一列为了兼容ASCII字符)
下面分析一下如何将一个unicode中文的编码如何转换为utf-8的编码:
假设Unicode中汉字“你”的编码为“u5E05",转化为二进制为0101,1110,0000,0101 ,可以将Unicode二进制从低往高取出二进制,每次取6位,得到的3组二进制依次带入上述的utf-8的编码表(第3行):得到 11100101, 10111000,10000101 即得到utf-8的编码为E5B885。
即是: 0101,1110,0000,0101 分3段 0101 , 111000, 000101,
0101,1110,0000,0101 >>(右移) 12 ==> 0101 |(或) 11100000 ==>11100101
0101,1110,0000,0101 >> 6 ==> 0101,1110,00 &(与) 00111111 ==> 00111000 | 10000000 ==> 10111000
0101,1110,0000,0101 & 00111111 ==> 000101 | 10000000 => 10000101
得到的ut8编码的二进制 10111000 10000101 === E5B885
同样要将utf-8转换为unicode编码:你的utf-8编码为E5B885,转化为二进制11100101, 10111000,10000101,可以判断它占3个字节,即:将11100101, 10111000,10000101 => 0101,1110,0000,0101。
11100101 与 00011111 求与 =》 101
10111000 与 00111111 求与 =》 111000
10000101 与 00111111 求与 =》 000101,
得到unicode 编码的二进制 101111000000101 === u5E05 ;
相关文章推荐
- Python的编码机制,unicode, utf-8, utf-16, GBK, GB2312,ISO-8859-1 等编码之间的转换。
- C#_汉字与GBK,Unicode,UTF-8编码之间的转换(by daode1212)
- gbk, gb2312,big5,unicode,utf-8,utf-16之间的关系
- gbk, gb2312,big5,unicode,utf-8,utf-16之间的关系
- gbk, gb2312,big5,unicode,utf-8,utf-16之间的关系
- C#_汉字与GBK,Unicode,UTF-8编码之间的转换(by daode1212)
- ASCII、Unicode、GBK、UTF-8之间的关系
- UTF,ISO8859-1,Unicode,GBK之间的关系的介绍
- gbk, gb2312,big5,unicode,utf-8,utf-16之间的关系
- ASCII, BIG5, GBK, Unicode, UTF之间的关系
- Unicode与UTF-8之间转换关系
- C#_汉字与GBK,Unicode,UTF-8编码之间的转换
- 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)
- JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换
- 字符编码知识:Unicode、UTF-8、ASCII、GB2312等编码之间是如何转换的
- Unicode和UTF-8之间的转换详解
- dedecms网站GBK与UTF-8相互之间怎么转换
- 字符集之间转换(UTF-8,UNICODE,Gb2312)
- unicode, ANSI, utf-8字符集之间的转换 C,C++
- 符号编码-ASCII、Unicode、Unicode big endian、UTF-8之间的关系(转)