0

我对不同平台中的重音字符有疑问。

当我在我的机器上登录fedora(默认字符集为 UTF-8)时,它会正确打印为Sacré Coeur。

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

我想将它记录在 RedHat 服务器中,就像在我的 Fedora 机器上一样。我怎样才能做到这一点?

我的锻炼:

  • 我试图改变 System.setProperty("file.encoding", "ISO-8859-1"); 在本地执行反向版本 System.setProperty("file.encoding", "UTF-8"); 在 RedHat Server 中,如果它改变了在本地的登录方式。但什么都没有改变。
  • 我注意到有几个关于重音字符的线程,但没有回答我。这就是为什么我问了一个新问题。
  • 我也试过这个,但没有用。

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

  • 但我没有尝试在 JVM 启动时设置字符集。如果可行,请解释我该怎么做?
4

1 回答 1

1

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

(让我们说 jboss 中的 run.sh,将 -Dfile.encoding=UTF-8 添加到 JAVA_OPTS)

-Dfile.encoding=UTF-8

于 2013-03-06T06:17:26.390 回答