RFR: 8275007: Java fails to start with null charset if LC_ALL is set to certain locales [v2]
Ichiroh Takiguchi
itakiguchi at openjdk.java.net
Thu Nov 11 09:43:44 UTC 2021
On Tue, 9 Nov 2021 19:38:01 GMT, Naoto Sato <naoto at openjdk.org> wrote:
>> Please review the subject fix. In light of JEP400, Java runtime can/should start in UTF-8 charset if the underlying native encoding is not supported.
>
> Naoto Sato has updated the pull request incrementally with one additional commit since the last revision:
>
> Emit a warning on unsupported jnu encoding
I don't have Oracle Linux...
I tried to find out unsupported locales by using following commands.
I used RHEL7.9.
$ cat CharsetIsSupported.java
import java.nio.charset.Charset;
public class CharsetIsSupported {
public static void main(String[] args) throws Exception {
for(String s : args) {
if (!Charset.isSupported(s))
System.out.println(s);
}
}
}
$ locale -a | while read LOC; do env LANG=$LOC locale charmap; done | sort -u | xargs ~/jdk-17.0.1/bin/java CharsetIsSupported.java > encoding.lst
$ locale -a | while read LOC; do echo -e "$LOC\t\c"; env LANG=$LOC locale charmap; done | grep -f encoding.lst
cy_GB ISO-8859-14
cy_GB.iso885914 ISO-8859-14
hy_AM.armscii8 ARMSCII-8
ka_GE GEORGIAN-PS
ka_GE.georgianps GEORGIAN-PS
kk_KZ PT154
kk_KZ.pt154 PT154
lg_UG ISO-8859-10
lg_UG.iso885910 ISO-8859-10
tg_TJ KOI8-T
tg_TJ.koi8t KOI8-T
I tried following command, "sun.jnu.encoding" system property was referred following source code.
We may need to care about these files.
$ find src -type f | xargs grep '"sun.jnu.encoding"'
src/java.base/share/classes/java/lang/System.java: var jnuEncoding = props.getProperty("sun.jnu.encoding");
src/java.base/share/classes/java/lang/System.java: props.getProperty("sun.jnu.encoding"));
src/java.base/share/classes/jdk/internal/util/SystemProps.java: put(props, "sun.jnu.encoding", raw.propDefault(Raw._sun_jnu_encoding_NDX));
src/java.base/share/classes/sun/launcher/LauncherHelper.java: private static final String encprop = "sun.jnu.encoding";
src/java.base/share/classes/sun/nio/fs/Util.java: GetPropertyAction.privilegedGetProperty("sun.jnu.encoding"),
src/java.base/share/native/libjava/jni_util.h: NO_ENCODING_YET = 0, /* "sun.jnu.encoding" not yet set */
src/java.desktop/share/classes/sun/font/SunFontManager.java: String sysEncoding = System.getProperty("sun.jnu.encoding");
-------------
PR: https://git.openjdk.java.net/jdk/pull/6282
More information about the core-libs-dev
mailing list