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机器就不行了。大家帮忙看看什么问题,谢谢
public static void main(String[] args){
String word = "中文";
try {
System.out.println(word);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}在本地编译运行都正常,可编译后传到服务器上就打印出来"??"。如果我在服务器上用 javac hello.java 编译后,再执行就正常。就是说我在本地编译的文件上传到服务器上中文就乱码,要是在服务器上编译服务器上运行就正常。我的服务器在法国,操作系统是windows2003中文版的,中文字体肯定有。问题就是不管是本机还是服务器,只能本机编译本机运行,把编译好的传到另1机器就不行了。大家帮忙看看什么问题,谢谢
在这两台服务器上分别输出一下,看看结果一样不??
Locale local = Locale.getDefault();
System.out.println("country :"+local.getCountry());
System.out.println("language :"+local.getLanguage());
System.out.println("language :"+local.getLanguage());-------------------------------
这个打印出来不一样是正常的,在法国的的语言和国家肯定不一样,但JDK是多语言的,不可能会跟服务器的语言相关的。
正如你说的一样,果然是file.encoding不一样的原因,我在区域设置里面把服务器的改成中国,编码就一样了。但问题是我的区域需要选择法国,因为上面还有其他的法语网站,如果改了这个会有影响,请问有没有其他地方修改file.encoding?
这只是我的理解,错了希望有人来指点我一下。
真的很难办 没有想到好方法 看看有没有高手来 要不叫竹子来但如果编码可以兼容的话 就拿Eclipese来说可以换本地的默认编码为UTF-8或者Unicode来编辑编译这样也许
能成
看了你写的那个了,挺不错的,收藏了
“tomcat上加上JAVA的启动参数 -Dfile.encoding=GBK”
这个是在catalina.bat中加的??
我说一下,我的简单想法。
就是说如果你的工程中有类似于listener这种服务启动时就加载的类,那么在它的初始化的方法里的第一句
设置System.setProperty("file.encoding", "你想要的编码");这样无论你怎么编译在执行的时候都是之前已经写死的系统编码,而且这样设置还不会真正改变系统的编码
只会设置JVM内部指定的系统编码,
要是方便可以试一下~~