常用字符编码实例分析

来源:互联网 发布:淘宝刷客拿钱不办事 编辑:程序博客网 时间:2024/06/07 14:13

大家经常在windows下使用notepad就会发现保存的时候有编码类型选择ANSI(中国是GB18030)、unicode、unicode big endian、UTF-8,下面进行实例分析,如下图1为文本显示及不同的字符编码的HEX显示:


图1

1.GB18030

GB18030是中华人民共和国最新的内码字集及编码方式,字节结构采用单字节、双字节、四字节编码,其不会重叠混淆。

单字节:0x00 - 0x7F (对应于ASCII)

双字节:0x8140 - 0xFE7E

      0xFE80 - 0xFEFE

四字节:0x81308130 - 0xFE39FE39

针对上图1的ANSI(GB18030)编码分析:


图2

2.Unicode

这里的Unicode即是字符集也是编码方式,其为UTF-16小尾编码,丢失一个字节整个文件将无效。

针对上图1的Unicode编码分析:


图3

3.Unicode big endian

这里的Unicode即是字符集也是编码方式,其为UTF-16大尾编码,丢失一个字节整个文件将无效。

针对上图1的Unicode big endian编码分析:


图4

4.UTF-8

UTF-8以字节编码,没有大小尾的区分,是ASCII编码的超集。

字节流形式:一字节:0xxxxxxx

两字节:110xxxxx 10xxxxxx

三字节:1110xxxx 10xxxxxx 10xxxxxx

四字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

五字节:111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

六字节:1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

针对上图1的UTF-8编码分析:


图5

5.趣事

记事本以ANSI格式只保存“联通”,双击打开为一个小方块。

解释:“联通”在GB18030中的表示为“C1 AA CD A8”,双击打开的操作,记事本判断第一个字节“11000001”为UTF-8的两字节流形式,第三个字节“11001101”也为UTF-8的两字节流形式,故判断为UTF-8字符编码格式打开为乱码。



原创粉丝点击