java中的中文长度是1,这和C中的中文长度不一样,能否在保证字符串内容不变的情况下,使中文长度和C语言一致呢,谢谢

解决方案 »

  1.   

    在JAVA中char和byte是两个不同的概念。
    而在C中,如果你使用宽字符集,中英文字符的长度也是一样的。
      

  2.   

    在Java的String上调用getBytes,返回的byte数组,其性质倒是很像楼主想要的东西。:)
      

  3.   

    比如:String s = "我常来CSDN";
    System.out.println(s.length()); //会打印出7
    byte[] bytes = s.getBytes();
    System.out.println(bytes.length); //会打印出10
      

  4.   

    s.getBytes();请谨慎使用。这个会使用系统的默认编码来转换。应该明确指定编码。public class TestInner {
    public static void main(String[] args) throws Exception {
    System.out.println("A".getBytes("ASCII").length);
    System.out.println("汉".getBytes("ASCII").length);
    System.out.println("A".getBytes("GBK").length);
    System.out.println("汉".getBytes("GBK").length);
    }
    }
      

  5.   

    ncowboy大侠说的是对的。我刚写下那几会代码时,其实也写了个“GBK”的,后来想到并非每种平台都支持GBK的,干粹就去掉了,让系统自己看着办去吧,呵呵。
      

  6.   

    不是两位三位的问题,如果系统中不支持GBK,getBytes会出错的。
      

  7.   

    出错了可以理解呀可是
    System.out.println("汉".getBytes("ASCII").length);是一位,而
    System.out.println("汉".getBytes("GB2312").length);是两位就有点不理解了
      

  8.   

    MS932:1
    ASCII:1
    GB2312:2   //***
    Unicode:4
    utf-8:3   //***
    iso-8859-1:1
    utf-16:4     //***
    utf-16be:2   //***
    utf-16le:2唉
    看来还得查查编码的问题呀
      

  9.   

    找来找去还是回来了CSDN :)
    有兴趣大家也看看
    http://blog.csdn.net/NetMicrobe/archive/2006/10/10/1329393.aspx