1个很简单的类:public class hello {
    public static void main(String[] args){
        String word = "中文";
        try {
            System.out.println(word);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}在本地编译运行都正常,可编译后传到服务器上就打印出来"??"。如果我在服务器上用 javac hello.java 编译后,再执行就正常。就是说我在本地编译的文件上传到服务器上中文就乱码,要是在服务器上编译服务器上运行就正常。我的服务器在法国,操作系统是windows2003中文版的,中文字体肯定有。问题就是不管是本机还是服务器,只能本机编译本机运行,把编译好的传到另1机器就不行了。大家帮忙看看什么问题,谢谢

解决方案 »

  1.   

    System.out.println(System.getProperty("file.encoding"));
    在这两台服务器上分别输出一下,看看结果一样不??
      

  2.   

    打印下Local看看
    Locale local = Locale.getDefault();
    System.out.println("country :"+local.getCountry());
    System.out.println("language :"+local.getLanguage());
      

  3.   

    楼主这边的源代码全部换成 UTF-8 编码,然后 javac 命令加上-encoding UTF8 参数。
      

  4.   

    这个明显就是两个机子的编码不一样吗,简单点说就是把两个机子的默认编码语系都改成UTF-8的就都一致了
      

  5.   

    System.out.println("country :"+local.getCountry()); 
    System.out.println("language :"+local.getLanguage());-------------------------------
    这个打印出来不一样是正常的,在法国的的语言和国家肯定不一样,但JDK是多语言的,不可能会跟服务器的语言相关的。
      

  6.   


    正如你说的一样,果然是file.encoding不一样的原因,我在区域设置里面把服务器的改成中国,编码就一样了。但问题是我的区域需要选择法国,因为上面还有其他的法语网站,如果改了这个会有影响,请问有没有其他地方修改file.encoding?
      

  7.   

    现场编译太麻烦了,项目比较大的时候,文件比较多,传到法国的服务器太慢了,而且还需要在服务器上安装JDK和ANT,不好。现在总算找到原因了,等下再想办法解决,谢谢啦,等我解决了就结贴。
      

  8.   

    有发现1个奇怪问题,在JSP中使用out.println(System.getProperty("file.encoding")) 打印出来是UTF-8,如果在cmd 中用JAVA命令调用打印file.encoding又是Cp1512,难道tomcat修改了file.encoding?
      

  9.   

    记得tomcat的server.xml中只有配置URIEncoding的地方,还不知道有能改变系统编码的设置
      

  10.   

      因为你保存的时候是用的GBK或是你系统使用编码,你编译的时候可能就记录的是这种编码。  你再换一个新的环境的时候编码不一致,所以就出现乱码吧。
        这只是我的理解,错了希望有人来指点我一下。
      

  11.   

    自己想了测试了半天 发现如果法国服务器的本地编码并不和Unicode或UTF-8的兼容的话
    真的很难办 没有想到好方法 看看有没有高手来 要不叫竹子来但如果编码可以兼容的话 就拿Eclipese来说可以换本地的默认编码为UTF-8或者Unicode来编辑编译这样也许
    能成
      

  12.   

    该问题已解决,大家看看我的解决办法:http://blog.csdn.net/BearRui/archive/2009/10/24/4724544.aspxPS:多谢imasmallbird的帮忙下周2结贴,看还有没有人有更好的想法。
      

  13.   

    呵呵,也没帮上啥~~,解决问题就好
    看了你写的那个了,挺不错的,收藏了
    “tomcat上加上JAVA的启动参数 -Dfile.encoding=GBK”
    这个是在catalina.bat中加的??
      

  14.   

    恩,在catalina.bat加,如果tomcat是windows服务的话,可以直接在tomcat的启动界面中加。
      

  15.   

    路过学习了 http://blog.csdn.net/BearRui/archive/2009/10/24/4724544.aspx 
      

  16.   

    早晨起来又想了一下,感觉有个方法可以试一下,但是现在家里没有这个环境~~
    我说一下,我的简单想法。
    就是说如果你的工程中有类似于listener这种服务启动时就加载的类,那么在它的初始化的方法里的第一句
    设置System.setProperty("file.encoding", "你想要的编码");这样无论你怎么编译在执行的时候都是之前已经写死的系统编码,而且这样设置还不会真正改变系统的编码
    只会设置JVM内部指定的系统编码,
    要是方便可以试一下~~