Allowing apps to force sun.jnu.encoding = "UTF-8" on Windows
Naoto Sato
naoto.sato at oracle.com
Wed Oct 30 17:19:12 UTC 2024
Hi,
This has been discussed when we did JEP 400: UTF-8 by Default and
decided not to do it, mainly because it affects filename/path encoding.
Changing `sun.jnu.encoding` apart from Windows system encoding will make
apps not being able to access those files/directories (e.g. home
directory) if the path/name contains characters with different encodings.
Naoto
On 10/30/24 8:37 AM, Fabian Meumertzheim wrote:
> On Windows, java.exe determines the value of "sun.jnu.encoding" and thus
> the encoding of any command-line arguments, environment variables, file
> names etc. based on the process' active code page (using the GetACP()
> Windows API function). On a vanilla Windows machine, this is typically a
> legacy code page such as Cp1252 that is not able to represent all
> Unicode characters. While it is possible to set the default system code
> page to UTF-8 in recent Windows releases, this affects all applications
> on the system, some of which may not be compatible with this setting.
>
> I would like to add a way for a Java application to force this encoding
> to be UTF-8 without any trickery (such as sidestepping java.exe by using
> the native Invocation API and changing the processes active code page)
> or modifications to global system settings. This would require changes
> to libjava and the native launcher.
>
> Are there others that would like to see such a change? Has this been
> thought of or attempted before?
>
> Fabian
More information about the core-libs-dev
mailing list