【发布时间】:2011-08-27 06:36:21
【问题描述】:
我想知道将我的文件编码设置为 UTF-8 的 Java 虚拟机 (JVM) 属性的值是多少。
我是输入-Dfile.encoding=UTF8 还是-Dfile.encoding=UTF-8?
【问题讨论】:
我想知道将我的文件编码设置为 UTF-8 的 Java 虚拟机 (JVM) 属性的值是多少。
我是输入-Dfile.encoding=UTF8 还是-Dfile.encoding=UTF-8?
【问题讨论】:
【讨论】:
UTF-8 优于UTF8 - 唯一的标准格式。
UTF8 没有连字符 - 但是,这个答案的 cmets 建议使用连字符形式 UTF-8。不是很有帮助。
UTF8 和 UTF-8 都适用于我。
【讨论】:
如果在您的语言环境建议使用 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。
【讨论】:
这不是一个直接的答案,但如果您无法访问 java 的启动方式,这将非常有用:您可以将环境变量 JAVA_TOOLS_OPTIONS 设置为 -Dfile.encoding="UTF-8",并且每次 jvm 启动时都会选择该选项.
【讨论】:
[INFO] BUILD SUCCESS
无论如何,它对我有用:)
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
【讨论】: