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

ast*_*ouf 62 encoding jvm file utf-8

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

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

pla*_*nes 58

这将是:

UTF8
Run Code Online (Sandbox Code Playgroud)

请参阅此处了解定义.

  • 两者都有效但"UTF-8"比"UTF8"更受欢迎 - 这是唯一的标准格式. (7认同)
  • 这个答案说“UTF8”没有连字符——但是,这个答案的注释建议使用连字符形式的“UTF-8”。不是很有帮助。 (4认同)

jav*_*ett 15

如果在您的语言环境建议使用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()));
Run Code Online (Sandbox Code Playgroud)

...收益率:

file.encoding: UTF-8
defaultCharset: UTF-8
Run Code Online (Sandbox Code Playgroud)

...暗示默认是UTF-8在这样的平台上.

另外,如果java.nio.charset.Charset.defaultCharset()发现file.encoding未设置,它会查找java.nio.charset.Charset.forName("UTF-8"),建议它更喜欢该字符串,虽然它是有别名的,所以"UTF8"也可以正常工作.

如果你在相同的平台上运行相同的程序java -Dfile.encoding=UTF8,没有hypen,它会产生:

file.encoding: UTF8
defaultCharset: UTF-8
Run Code Online (Sandbox Code Playgroud)

...注意到默认的字符集已经规范化UTF8UTF-8.


Mil*_*ric 8

这不是一个直接的答案,但如果您无法访问java如何启动,则非常有用:您可以将环境变量设置为JAVA_TOOLS_OPTIONS,-Dfile.encoding="UTF-8"并且每次jvm启动时它都会选择该选项.


Ped*_*rid 7

UTF8和UTF-8都适合我.


小智 7

[INFO] BUILD SUCCESS
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
无论如何,它对我有用:)