to Athene(菜菜子)
在你的机器上输出长度是 7 的原因,只不过是因为你在编译的时候的编码方式为 iso8859-1 的原因。如果你用这种方式编译: javac -encoding GBK YourClass.java,则输出一定是 5。

解决方案 »

  1.   

     String str = "中文abc";
     byte[] byteTest = str.getBytes("ISO8859-1");
     str = new String(byteTest);
     System.out.println(str.length());
     这样输出结果还是5,应该怎么办呢?
      

  2.   

    最简单的方法
    int len=str.getBytes().length;即可 len=7
      

  3.   

    javac -encoding ISO8859-1 YourClass.java
    如果你是这样编译的话,则:
    String str = "中文abc";
    System.out.println(str.length());输入的一定是 7。javac -encoding GBK YourClass.java
    如果你是这样编译的话,则:
    String str = "中文abc";
    System.out.println(str.length());输入的一定是 5。
    以下的语句,你用两种编译方式输出的结果是不同的,这也是很多系统产生中文问题的原因。
    慢慢体会其中的奥妙吧,其实中文问题很简单的。        String str = "中国";
            System.out.println("String length: " + str.length());
            System.out.println("Byte array length: " + str.getBytes().length);
            System.out.println("String: " + str);
         
            str = new String(str.getBytes("ISO8859-1"), "GBK");
            System.out.println(str);