好像utf-16总是以双字节编码,utf-8以紧缩型方式编码,单字节型以单字节编码,双字节型以双字节编码。

解决方案 »

  1.   

    utf-16是以双字节编码,是国际上标准编码方式,Java默认支持的编码方式,utf-8以单字节编码,只支持大部分编码,像ASCII等。
      

  2.   

    UTF-16标准的UNICODE无论什么字符都用两个字节来表示。
    UTF-8因为觉得还是英文的东东多一些,如果都用双字节来表示太浪费了,所以一些字符如英文字符就用一个字节,其它的就用三个字节来表示。--记得不是很清楚了
      

  3.   

    UTF-16就是标准的UNICODE编码,以两个字节表示。
    UTF-8用于包含ASCII字符的文本,可以节约存储空间,具体如下:
    1、前9位为0的16位UNICODE编码字符以一个字节表示,如'1',保存为0x31
    2、前5位为0的16位UNICODE编码字符以二个字节表示,高字节前三位为110,后五位为UNCODE编码的第六位到第十位,低字节以10开头,后接UNICODE编码的第0位到第五位,如\u0712,保存为0x92DC
    110a[11]a[10]a[9]a[8]a[7]a[6]
    10a[5]a[4]a[3]a[2]a[1]a[0]
    3、所有其他字符都以三个字节表示
    1110a[15]a[14]a[13]a[12]
    10a[11]a[10]a[9]a[8]a[7]a[6]
    10a[5]a[4]a[3]a[2]a[1]a[0]你可以用windows的记事本将同样的文本分别保存为 unicode 和utf-8 然后比对看