JVM属性-Dfile.encoding = UTF8或UTF-8?

我想知道什么是Java虚拟机(JVM)属性的值设置我的文件编码为UTF-8。

我把-Dfile.encoding=UTF8-Dfile.encoding=UTF-8

这将是:

 UTF8 

在这里看到的定义。

如果在您的语言环境build议使用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 

build议在这样一个平台上默认是UTF-8

此外,如果java.nio.charset.Charset.defaultCharset()发现file.encoding未设置,它会查找java.nio.charset.Charset.forName("UTF-8") ,表示它倾向于该string,尽pipe它是好的别名,所以“UTF8”也将正常工作。

如果您使用java -Dfile.encoding=UTF8在相同的平台上运行相同的程序,

 file.encoding: UTF8 defaultCharset: UTF-8 

…注意到默认字符集已经从UTF8标准化为UTF-8

UTF8和UTF-8都适用于我。

这不是一个直接的答案,但是如果你不能访问java的启动方式,这个方法非常有用:你可以将环境variablesJAVA_TOOLS_OPTIONS设置为-Dfile.encoding="UTF-8" ,每当jvm启动时它就会启动那个选项。