JVM property -Dfile.encoding=UTF8 or UTF-8?

后端 未结 5 917
傲寒
傲寒 2020-12-01 01:57

I would like to know what is the value of the Java Virtual Machine (JVM) property to set my file encoding to UTF-8.

Do I put -Dfile.encoding=UTF8 or

5条回答
  •  长情又很酷
    2020-12-01 02:32

    If, running an Oracle HotSpot JDK 1.7.x, on a Linux platform where your locale suggests UTF-8 (e.g. LANG=en_US.utf8), if you don't set it on the command-line with -Dfile.encoding, the JDK will default file.encoding and the default Charset like this:

    System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
    System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));
    

    ... yields:

    file.encoding: UTF-8
    defaultCharset: UTF-8
    

    ... suggesting the default is UTF-8 on such a platform.

    Additionally, if java.nio.charset.Charset.defaultCharset() finds file.encoding not-set, it looks for java.nio.charset.Charset.forName("UTF-8"), suggesting it prefers that string, although it is well-aliased, so "UTF8" will also work fine.

    If you run the same program on the same platform with java -Dfile.encoding=UTF8, without the hypen, it yields:

    file.encoding: UTF8
    defaultCharset: UTF-8
    

    ... noting that the default charset has been canonicalized from UTF8 to UTF-8.

提交回复
热议问题