Found small charset issues
* Missing historical name alias in ISO8859-16
* Typo hisname on x-eucJP-Open
* x-IBM834 and x-IBM949C charset source codes should be template style
Detail information is as follows:
Missing historical name alias in ISO-8859-16
java.io.InputStreamReader.getEncoding() returns historical name on Charset if sun.nio.cs.HistoricallyNamedCharset interface is implemented.
But historical name on ISO-8859-16 charset is not defined as its alias.
======
$ cat HistNameTest.java
import java.nio.charset.*;
import java.io.*;
public class HistNameTest {
������ public static void main(String[] args) throws Exception {
�������������� for(Charset cs : Charset.availableCharsets().values()) {
���������������������� String enc = (new InputStreamReader(System.in, cs)).getEncoding();
���������������������� try {
������������������������������ if (!cs.equals(Charset.forName(enc)))
�������������������������������������� System.err.println(cs.name()+"<>"+enc);
���������������������� } catch (Exception e) {
������������������������������ System.err.println(cs.name());
������������������������������ e.printStackTrace();
���������������������� }
�������������� }
������ }
}
$ ~/jdk-15.jdk/Contents/Home/bin/java HistNameTest.java
ISO-8859-16
java.nio.charset.UnsupportedCharsetException: ISO8859_16
������ at java.base/java.nio.charset.Charset.forName(Charset.java:526)
������ at HistNameTest.main(HistNameTest.java:9)
...
======
Typo hisname on x-eucJP-Open
According to make/data/charsetmapping/charsets,
Hisname on x-eucJP-Open is not valid, should be "EUC_JP_Solari"
======
charset x-eucJP-Open EUC_JP_Open
������ package sun.nio.cs.ext
������ type������ template
������ hisname EUC_JP_Solari
������ ascii���� true
������ alias���� EUC_JP_Solaris������������ # JDK historical
������ alias���� eucJP-open
======
But this hisname is not used.
According to src/jdk.charsets/share/classes/sun/nio/cs/ext/EUC_JP_Open.java.template,
Historical name is hard coded, but this typo should be fixed.
======
������ public EUC_JP_Open() {
�������������� super("x-eucJP-Open", $ALIASES$);
������ }
�������� public String historicalName() {
�������������� return "EUC_JP_Solaris";
������ }
======
x-IBM834 and x-IBM949C charset source codes should be template style
According to make/data/charsetmapping/charsets,��
x-IBM834 and x-IBM949C's type are "source"
======
charset x-IBM834 IBM834 # EBCDIC DBCS-only Korean
������ package sun.nio.cs.ext
������ type������ source
...
charset x-IBM949C IBM949C
������ package sun.nio.cs.ext
������ type������ source
======
According to IBM834.java, it refers IBM933 class.
src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM834.java
======
������ public CharsetDecoder newDecoder() {
�������������� IBM933.initb2c();
�������������� return new DoubleByte.Decoder_DBCSONLY(
���������������������� this, IBM933.b2c, null, 0x40, 0xfe);�� // hardcode the b2min/max
������ }
======
According to IBM949C.java, it refers IBM949 class.
src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM949C.java
======
������ public CharsetDecoder newDecoder() {
�������������� return new DoubleByte.Decoder(this,
�������������������������������������������������������������������������� IBM949.b2c,
�������������������������������������������������������������������������� b2cSB,
�������������������������������������������������������������������������� 0xa1,
�������������������������������������������������������������������������� 0xfe);
������ }
======
According to make/data/charsetmapping/charsets,��
IBM933 and IBM949 are not "source" type.
======
charset x-IBM933 IBM933
������ package sun.nio.cs.ext
������ type������ ebcdic
...
charset x-IBM949 IBM949
������ package sun.nio.cs.ext
������ type������ dbcs
======
They can be moved to sun.nio.cs package via make/data/charsetmapping/stdcs-* file.
Then IBM834 and IBM949C cannot move to sun.nio.cs package if type is "source".
So their source code should be template style.