本帖最后由 cjhuaxin 于 2012-07-27 11:51:38 编辑

解决方案 »

  1.   

    如果用utf-8编码的话 ,是不行的 ,java文件开始好像多了两个字节的东西吧
      

  2.   

     class Person{
    String name;
    int age;
    String sex = "男";
    public Person(String name,int age){
    this.name = name;
    this.age = age;
    }
    public void info(){
    System.out.println("姓名:"+this.name+" 年龄:"+age+" 性别:"+sex);
    }
     }
     public class StaticDemo{
      public static void main(String[] args) {
      Person p1 = new Person("张三",20);
      Person p2 = new Person("李四",30);
      p1.info();
      p2.info();  }
     }
    这就是源码,很简单的一段代码,没什么为题吧。
      

  3.   

    把代码用ANSI另存为以后,用sublime打开,中文会显示乱码,但是编译没问题,我的sublime默认编码是utf-8。
     class Person{
    String name;
    int age;
    String sex = "ÄÐ";
    public Person(String name,int age){
    this.name = name;
    this.age = age;
    }
    public void info(){
    System.out.println("ÐÕÃû£º"+this.name+" ÄêÁ䣺"+age+" ÐÔ±ð£º"+sex);
    }
     }
     public class StaticDemo{
      public static void main(String[] args) {
      Person p1 = new Person("ÕÅÈý",20);
      Person p2 = new Person("ÀîËÄ",30);
      p1.info();
      p2.info();  }
     }
      

  4.   

    看了你的问题,觉得应该是在cmd中用javac进行编译时,会自动用操作系统的默认编码对程序进行编译,而中文操作系统的默认编码一般都是GBK编码。你在sublime中编写程序用的是sublime的默认编码UTF-8,UTF-8编码中文字符占3个字节,GBK编码中文字符占2个字节,这样用UTF-8编写中文再用GBK解析中文时就会是乱码,楼上“把代码用ANSI另存为以后,用sublime打开,中文会显示乱码”的道理也是一样的。
      

  5.   

    看了你的问题,觉得应该是在cmd中用javac进行编译时,会自动用操作系统的默认编码对程序进行编译,而中文操作系统的默认编码一般都是GBK编码。你在sublime中编写程序用的是sublime的默认编码UTF-8,UTF-8编码中文字符占3个字节,GBK编码中文字符占2个字节,这样用UTF-8编写中文再用GBK解析中文时就会是乱码,楼上“把代码用ANSI另存为以后,用sublime打开,中文会显示乱码”的道理也是一样的。
      

  6.   

    把sublime的默认编码改成GBK或GB2312应该可以解决问题
      

  7.   

    javac -encoding utf-8 test.java