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启动时它就会启动那个选项。