我想知道将我的文件编码设置为UTF-8的Java虚拟机(JVM)属性的价值是什么。
我把-Dfile.encoding=UTF8
或-Dfile.encoding=UTF-8
?
[INFO] BUILD SUCCESS
无论如何,它对我有用:)
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
如果在您的语言环境建议使用UTF-8(例如LANG=en_US.utf8
)的Linux平台上运行Oracle HotSpot JDK 1.7.x,如果未在命令行中使用-Dfile.encoding
进行设置,则JDK将默认使用file.encoding
和默认值Charset
像这样:
System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));
...收益率:
file.encoding: UTF-8
defaultCharset: UTF-8
...在这样的平台上暗示默认是UTF-8
。
另外,如果java.nio.charset.Charset.defaultCharset()
发现file.encoding
没有设置,它会查找java.nio.charset.Charset.forName("UTF-8")
,建议它更喜欢该字符串,虽然它有很好的别名,所以“UTF8”也可以正常工作。
如果你使用java -Dfile.encoding=UTF8
在同一平台上运行相同的程序,没有连字符,它会产生:
file.encoding: UTF8
defaultCharset: UTF-8
...注意到默认字符集已经从UTF8
规范化为UTF-8
。
UTF8和UTF-8都适合我。
这不是一个直接的答案,但如果您无法访问java的启动方式,则非常有用:您可以将环境变量JAVA_TOOLS_OPTIONS
设置为-Dfile.encoding="UTF-8"
,每次jvm启动时都会选择该选项。