问题:
    在Windows系统下,新建一个记事本文件内容为“大家好”,保存为ANSI(GB2312)时是6个字节,保存为utf8是12个字节,GB2312不是占两个字节,utf8不是占三个字节么,为什么结果却是6和12呢?请指点。

解决方案 »

  1.   

    gb2312确实是一个字两字节,“大家好”是6字节没问题,但是utf-8的编码长度可不是固定的,不是每个字都是固定的字节。utf-8长度参考:http://baike.baidu.com/view/25412.htm
      

  2.   

    ASCII保存汉字是每个汉字用2个字节来存储,相当于半个汉字是1个字节
    而UTF-8保存汉字按宽字符来存储,宽字符总是以固定的16位(2字节)大小来表示,所以每个字符比ASCII字符大1倍
      

  3.   

    UTF-8 中确实是把汉字编为3字节“大家好” 编码结果应该就是9字节但是当你用记事本把内容按UTF-8存时,记事本在文件最开头添加3个字节 EF BB BF (称为 BOM头)用于标识此文件,下次记事本打开文档时,如果发现最开始的3字节是EF BB BF, 就认为此文档是 按 UTF-8编码存储,而不用去检测内容编码。