java默认编码方式是unicode的,如下例子:
String str = "a";System.out.println(str.getBytes().length);
System.out.println(str.getBytes("unicode").length);结果分别为
1
4为什么?

解决方案 »

  1.   

    另外getBytes是采用系统默认的编码(windows gb2312,windows下的eclipse是gbk)这些编码前面都是与ascll一致的,你可以打印出来看一下。
    系统的的unicode采用的是big-endian就是前面是两个字节来标示这个的。你也可以打印出来看一下。unicode采用的都是两个字节编码,所以后面是4个字节
      

  2.   

    str.getBytes().length 居然是1 你是不是用了utf-8作了默认编码了
      

  3.   

    String的getBytes()方法是得到一个字串的字节数组,这是众所周知的。
    但特别要注意的是,本方法将返回该操作系统默认的编码格式的字节数组。
    在一个中文WindowsXP系统和英文系统下酒不一样
      

  4.   

    第一个为什么为1是根据你系统的编码格式而定的
    至于为什么第二个为4,
    系统的的unicode采用的是big-endian就是前面是两个字节来标示这个的。
    unicode采用的都是两个字节编码,所以后面是4个字节
      

  5.   

    首先你求的是字符的字节数组长度
    1  str.getBytes().length
       在java编辑环境中默认字符编码是iso-8859-1 这种编码情况下一个字符占用1字节长度,所以str.getBytes().length=12  str.getBytes("unicode")
       unicode编码情况下,每个字符的字节长度是4,所以str.getBytes("unicode")=4
       
      

  6.   

    yinyuan1987 和hbgzg3006 的回答靠谱,谢谢两位.linwz520 你的回答会误导后来人哦...
    在unicode编码下每个字符(包括中文)都是两个字节的.