Details
-
Type:
CSR
-
Status: Closed
-
Priority:
P3
-
Resolution: Approved
-
Fix Version/s: 17-pool
-
Component/s: core-libs
-
Labels:None
-
Subcomponent:
-
Compatibility Kind:behavioral
-
Compatibility Risk:low
-
Compatibility Risk Description:Apps expecting the `file.encoding` initialized with `sprops->encoding` see the behavior differently.
-
Interface Kind:System or security property
-
Scope:Implementation
Description
Summary
Revert the file.encoding
initialization back to JDK11's behavior.
Problem
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
java.nio.charset.Charset#defaultCharset()
relies on this file.encoding
system property, so the users encounter inconsistent default charset with the said condition on Windows.
Solution
Initialize file.encoding
based on sun_jnu_encoding
on non macOS platforms as prior to the fix to JDK-4947890.
Specification
N/A. This is a behavioral change only.
Attachments
Issue Links
- csr of
-
JDK-8275379 file.encoding system property has an incorrect value on Windows
-
- Resolved
-