Fix Version/s: 18
Compatibility Risk Description:Apps expecting the `file.encoding` initialized with `sprops->encoding` see the behavior differently.
Interface Kind:System or security property
file.encoding initialization back to JDK11's behavior.
With the fix to JDK-4947890, the system property
file.encoding changed to be initialized to
sprops->encoding, which used to be
sprops->sun_jnu_encoding on non macOS platforms. This became an issue on Windows with system locale and user locale set to be different.
For example, a user with a Japanese Windows (system locale =
Japanese(Japan)) and user's locale
English (United States) sees the following behavioral difference:
JDK11: file.encoding = MS932 sun_jnu_encoding = MS932 JDK17: file.encoding = Cp1252 sun_jnu_encoding =MS932 JDK18 (with `-Dfile.encoding=COMPAT` command line option): file.encoding = Cp1252 sun.jnu.encoding = MS932
file.encoding based on
sun_jnu_encoding on non macOS platforms as prior to the fix to JDK-4947890.
N/A. This is a behavioral change only.