file.encoding system 属性 in Java 在不同的 JVM 实例中给出不同的结果
file.encoding system property in Java giving different results in different instances of JVM
我在 Centos 6.6 上 运行 Java 7。我在显示 UTF-8
的独立 tomcat 服务器实例中检查了 file.encoding
系统 属性。我在显示 ANSI_X3.4-1968
的嵌入式 tomcat 中检查了相同的内容。这两个实例都没有为 file.encoding
.
使用任何命令行参数
谜团是为什么 JVM 仅在嵌入式 tomcat 中推断 ANSI_X3.4-1968
?在所有其他情况下,它会根据我的区域设置正确推断 UTF-8
。
Java(不是 Tomcat)如果未在命令行中给出,则自动设置 file.encoding
。它将使用环境变量,例如 locale
来制定适当的设置。
例如,我的语言环境是 en_GB.UTF-8
,所以我的 file.encoding 解析为 UTF-8
。
"embedded" 实例可能没有获得完整的环境上下文,因此无法达到与独立实例相同的设置。
有关嵌入式实例的更多信息可能有助于阐明更多信息。
如果您始终希望将 file.encoding
设置为 UTF-8
,则必须使用此选项启动 JVM:
-Dfile.encoding=UTF-8
任何对启动 JVM 的特定环境的依赖都是不可靠的。
我在 Centos 6.6 上 运行 Java 7。我在显示 UTF-8
的独立 tomcat 服务器实例中检查了 file.encoding
系统 属性。我在显示 ANSI_X3.4-1968
的嵌入式 tomcat 中检查了相同的内容。这两个实例都没有为 file.encoding
.
谜团是为什么 JVM 仅在嵌入式 tomcat 中推断 ANSI_X3.4-1968
?在所有其他情况下,它会根据我的区域设置正确推断 UTF-8
。
Java(不是 Tomcat)如果未在命令行中给出,则自动设置 file.encoding
。它将使用环境变量,例如 locale
来制定适当的设置。
例如,我的语言环境是 en_GB.UTF-8
,所以我的 file.encoding 解析为 UTF-8
。
"embedded" 实例可能没有获得完整的环境上下文,因此无法达到与独立实例相同的设置。
有关嵌入式实例的更多信息可能有助于阐明更多信息。
如果您始终希望将 file.encoding
设置为 UTF-8
,则必须使用此选项启动 JVM:
-Dfile.encoding=UTF-8
任何对启动 JVM 的特定环境的依赖都是不可靠的。