RFR: 8265989: System property for the native character encoding name
Iris Clark
iris at openjdk.java.net
Thu Apr 29 05:41:51 UTC 2021
On Thu, 29 Apr 2021 00:37:37 GMT, Joe Wang <joehw at openjdk.org> wrote:
>> After some internal discussion, we thought it was good to expose the native environment's default character encoding, which Charset.defaultCharset() is currently based on. This way applications will have a better migration path after the [JEP 400](https://openjdk.java.net/jeps/400) is implemented, in which Charset.defaultCharset() will return UTF-8, but the value of this new system property will remain intact. A [CSR](https://bugs.openjdk.java.net/browse/JDK-8266075) has been filed with more detailed information.
>
> src/java.base/share/classes/java/lang/System.java line 704:
>
>> 702: * <tr><th scope="row">{@systemProperty native.encoding}</th>
>> 703: * <td>Character encoding name derived from the host environment and/or
>> 704: * the user's settings. Setting this system property has no effect.</td></tr>
>
> May be "This property is read-only" instead of "Setting this system property has no effect" to not confuse with "user's settings"?
I suspect that if setProperty("native.encoding", "foo") succeeds, then it will return "foo". I also believe that a later invocation of getProperty("native.encoding") will also return "foo". If that's the case, then I don't think that the "read-only" alternative phrasing is correct. To me, the alternative suggests that an error will be return if there is an attempt to set it or that the potential new value will be ignored. The "no effect" phrasing avoids this problem. I also suspect that the "no effect" phrasing was selected to align with the apiNote in lines 719-721.
-------------
PR: https://git.openjdk.java.net/jdk/pull/3777
More information about the core-libs-dev
mailing list