public class BytesTest{
public static void main(String[] args) throws Exception{
String str="在哪里where";
System.out.println(str);
  String strUC=new String(str.getBytes(),"Unicode");
System.out.println(strUC);
}
}在学习java的时候说java默认的编码方式是Unicode,那这样输出为什么是乱码,
而把str.getBytes()括号里加上"Unicode",指定编码方式,这样又可以正常输出呢?

解决方案 »

  1.   

    你这段代码好象连编译都不能通过,在eclipse上
      

  2.   

    我用JDK1.5 试了一下 第一个打印的没有乱码,第二个什么都不会打印。
      

  3.   

    要和你的编译工具的字符类型一致。
    例如:我的eclipse里面编码是MS932String str="在那里where";
            System.out.println(str);
            String strUC=new String(str.getBytes(),"MS932");
            System.out.println(strUC);结果:在那里where
         在那里where
      

  4.   

    我在我的eclipse里面试了一下,第一个正常输入,没有乱码,而第二个什么也不会输出。如果改成这样的话:
     public static void main(String[] args) throws Exception{
            String str="在哪里where";
            System.out.println(str);
          String strUC=new String(str.getBytes());
          System.out.println("123");
            System.out.println(strUC);
        }
    可以正常显示!
      

  5.   

    我在eclipse里面做过试验,证明java内部编码是:"utf-16be"。
      

  6.   

    String.getBytes()取出的字节默认为系统的编码