On Tue, 9 Nov 2021 19:38:01 GMT, Naoto Sato <na...@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