我想知道将我的文件编码设置为UTF-8的Java虚拟机(JVM)属性的价值是什么。
我是否应该-Dfile.encoding=UTF8
或-Dfile.encoding=UTF-8
?
答案 0 :(得分:54)
答案 1 :(得分:13)
如果在您的语言环境建议使用UTF-8(例如LANG=en_US.utf8
)的Linux平台上运行Oracle HotSpot JDK 1.7.x,如果未在命令行中使用{{1}进行设置,JDK将默认-Dfile.encoding
,默认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
,建议它更喜欢该字符串,尽管它有很好的别名,所以“UTF8”也可以正常工作细
如果您使用java.nio.charset.Charset.forName("UTF-8")
在同一平台上运行相同的程序,而没有使用,则会产生:
java -Dfile.encoding=UTF8
...注意到默认字符集已从file.encoding: UTF8
defaultCharset: UTF-8
规范化为UTF8
。
答案 2 :(得分:7)
UTF8和UTF-8都适合我。
答案 3 :(得分:6)
这不是一个直接的答案,但如果您无法访问java的启动方式,则非常有用:您可以将环境变量JAVA_TOOLS_OPTIONS
设置为-Dfile.encoding="UTF-8"
,每次jvm启动时它都会拿起那个选项。
答案 4 :(得分:0)
[INFO] BUILD SUCCESS
无论如何,它对我有用:)
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8