我在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
。
答案 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的特定环境都不可靠。