System.out.println("12测试".length());
System.out.println("12测试".codePointCount(0,"12测试".length() ));length()应该返回代码单元数量
codePointCount()应该返回代码点数量为什么length()没有返回代码单元数量6

解决方案 »

  1.   

    System.out.println("12测试".length()); 不是4么。。
      

  2.   

    length()返回此字符串序列的长度。长度等于字符串中 Unicode 代码单元的数量,每个汉字是一个unciode 代码单元
      

  3.   

    问题已经找到
    public static String gbkToIso(String para) {
    try {
    return new String(para.getBytes("GBK"), "ISO-8859-1");
    } catch (Exception e) {
    return "";
    }
    如果把字符串从gbk转换成ISO-8859-1,中文就会算成2个代码单元
    请问ISO-8859-1这样是正常的?
      

  4.   

    String.length() 返回字符串unicode代码单元的数量。也就是char的数量。java中char占2个字节,也就是说可以装的下绝大多数汉字的。因此,返回4。
      

  5.   

     java用的是unicode码 16位的汉字也只占一个unicode码。如果想变成6,就是转码str.getBytes("GBK"), "ISO-8859-1"