解决方案 »

  1.   

    你这里用的是UTF-8编码吧, 你改成:
    System.out.println(ch+"   "+ch.SIZE+"   "+String.valueOf(ch).getBytes("GBK").length);
    中文字符应该是 2 了;
      

  2.   

    你这里用的是UTF-8编码吧, 你改成:
    System.out.println(ch+"   "+ch.SIZE+"   "+String.valueOf(ch).getBytes("GBK").length);
    中文字符应该是 2 了;

    我检查我的环境用也是UTF-8编码;
    System.out.println(Charset.defaultCharset());
      

  3.   

    你这里用的是UTF-8编码吧, 你改成:
    System.out.println(ch+"   "+ch.SIZE+"   "+String.valueOf(ch).getBytes("GBK").length);
    中文字符应该是 2 了;

    嗯,中文基本明白了,
    英文字符呢,英文字符为什么 是16比特位,但是后面却显示是一个字节呢?
      

  4.   

    你这里用的是UTF-8编码吧, 你改成:
    System.out.println(ch+"   "+ch.SIZE+"   "+String.valueOf(ch).getBytes("GBK").length);
    中文字符应该是 2 了;

    嗯,中文基本明白了,
    英文字符呢,英文字符为什么 是16比特位,但是后面却显示是一个字节呢?
    这个是字符集编码问题,在GBK中,英文只有是全角字符才是2个字节,对于一般的英文字符,也就是ASCII编码了,一个字节了;
      

  5.   

    http://blog.csdn.net/zhanghenglei/article/details/7439345
    这篇博客中 说 java是用unicode来表示字符,"中"这个中文字符的unicode就是2个字节。
    实际上: String str = "a中";

    for(int i=0;i<str.length();i++){
    Character ch = str.charAt(i);
    System.out.println(ch+"   "+ch.SIZE+"   "+String.valueOf(ch).getBytes("ASCII").length+"   ASCII");
    System.out.println(ch+"   "+ch.SIZE+"   "+String.valueOf(ch).getBytes("UNICODE").length+"   UNICODE");
    System.out.println(ch+"   "+ch.SIZE+"   "+String.valueOf(ch).getBytes("UTF-8").length+"   UTF-8");
    System.out.println(ch+"   "+ch.SIZE+"   "+String.valueOf(ch).getBytes("GBK").length+"   GBK");
    System.out.println(ch+"   "+ch.SIZE+"   "+String.valueOf(ch).getBytes("GB2312").length+"   GB2312");
    System.out.println(ch+"   "+ch.SIZE+"   "+String.valueOf(ch).getBytes("ISO-8859-1").length+"   ISO-8859-1");
    }结果:
    a   16   1   ASCII
    a   16   4   UNICODE
    a   16   1   UTF-8
    a   16   1   GBK
    a   16   1   GB2312
    a   16   1   ISO-8859-1
    国   16   1   ASCII
    国   16   4   UNICODE
    国   16   3   UTF-8
    国   16   2   GBK
    国   16   2   GB2312
    国   16   1   ISO-8859-1显示  UNICODE编码是占  4个字节
    这是为什么
      

  6.   

    字符编码问题。
    楼主要了解常用的字符编码。
    ASCII、GBK、Unicode、UTF-8了解了字符编码的规则,自然就明白是怎么回事。
    当然,首先要了解,什么事字符编码。