在java下定义不同平台中的重音字符

时间:2013-03-06 00:32:52

标签: java character-encoding

我在不同平台上的重音字符有问题。

当我在 fedora (其中默认字符集为UTF-8)的机器中记录此内容时,它会相应地打印为SacréCoeur。

但是当我更新到在 RedHat 上运行的另一台服务器(默认字符集是ISO-8859-1)时,它正在打印为 SacréCoeur。

我想在RedHat服务器上登录,就像在我的Fedora机器上一样。我怎么能这样做?

我的锻炼:

  • 我尝试更改System.setProperty(“file.encoding”, “ISO-8859-1”);在当地与反向的purpouse 版本System.setProperty(“file.encoding”,“UTF-8”);在RedHat 服务器,如果它改变了登录本地的方式。但没什么 改变。
  • 我注意到有关于重音字符的几个主题 但是nithing回答我。这就是我问一个新问题的原因。
  • 我也试过了this one但没有工作。

    System.setProperty("file.encoding","ISO-8859-1"); Field charset =Charset.class.getDeclaredField("defaultCharset"); charset.setAccessible(true); charset.set(null,null);

  • 但我没有尝试在JVM启动时设置charset。如果有效,请解释我该怎么做?

1 个答案:

答案 0 :(得分:1)

从所有环境中获取类似的输出,而不依赖于服务器操作系统 默认字符编码,当你启动程序或服务器环境(Jboss tomcat或jetty)时,将-Dfile.encoding传递给启动脚本

(假设在jboss中运行run.sh,将-Dfile.encoding = UTF-8添加到JAVA_OPTS)

-Dfile.encoding = UTF-8