Java中的file.encoding系统属性在JVM的不同实例中给出不同的结果

时间:2016-02-16 17:04:59

标签: java tomcat utf-8 jvm java-7

我在Centos 6.6上运行Java 7。我在显示file.encoding的独立tomcat服务器实例中检查了UTF-8系统属性。我在嵌入式tomcat中检查了相同的内容ANSI_X3.4-1968。这两个实例都没有为file.encoding获取任何命令行参数。

谜团是为什么JVM只在嵌入式tomcat中推断ANSI_X3.4-1968?在所有其他情况下,它会根据我的区域设置正确推断UTF-8

2 个答案:

答案 0 :(得分:1)

如果没有在命令行上给出,Java(不是Tomcat)会自动设置file.encoding。它将使用环境变量(如locale)来计算出适当的设置。

例如,我的区域设置为en_GB.UTF-8,因此我的file.encoding已解析为UTF-8

“嵌入式”实例可能未获得完整的环境上下文,因此无法与独立实例达到相同的设置。

有关嵌入式实例的更多信息可能有助于提供更多亮点。

答案 1 :(得分:0)

如果您始终希望file.encoding设置为UTF-8,则必须使用此选项启动JVM:

-Dfile.encoding=UTF-8

任何依赖于启动JVM的特定环境都不可靠。