/* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /* @test * @bug 4473201 4696726 4652234 4482298 4784385 4966197 4267354 5015668 6911753 * @summary Check that registered charsets are actually registered */ import java.io.*; import java.nio.*; import java.nio.charset.*; import java.util.*; public class RegisteredCharsets { static String [] ianaRegistered = { "US-ASCII", "UTF8", "Big5", "EUC-JP", "GBK", "GB18030", "ISO-2022-KR", "ISO-2022-JP", "GB2312", // IANA preferred name for "EUC-CN" "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "ISO-8859-13", "ISO-8859-15", "windows-1251", "windows-1252", "windows-1253", "windows-1254", "windows-1255", "windows-1256", "windows-31j", "Shift_JIS", "JIS_X0201", "JIS_X0212-1990", "TIS-620", "Big5-HKSCS", "ISO-2022-CN", "IBM850", "IBM852", "IBM855", "IBM857", "IBM860", "IBM861", "IBM862", "IBM863", "IBM864", "IBM865", "IBM866", "IBM868", "IBM869", "IBM437", "IBM775", "IBM037", "IBM1026", "IBM273", "IBM277", "IBM278", "IBM280", "IBM284", "IBM285", "IBM297", "IBM420", "IBM424", "IBM500", "IBM-Thai", "IBM870", "IBM871", "IBM918", "IBM1047", "IBM01140", "IBM01141", "IBM01142", "IBM01143", "IBM01144", "IBM01145", "IBM01146", "IBM01147", "IBM01148", "IBM01149", "IBM00858" }; static String [] ianaUnRegistered = { "x-EUC-TW", "x-ISCII91", "x-windows-949", "x-windows-950", "x-mswin-936", "x-JIS0208", "x-ISO-8859-11", "x-windows-874", "x-PCK", "x-JISAutoDetect", "x-Johab", "x-MS950-HKSCS", "x-Big5-Solaris", "x-ISO-2022-CN-CNS", "x-ISO-2022-CN-GB", "x-MacArabic", "x-MacCentralEurope", "x-MacCroatian", "x-MacCyrillic", "x-MacDingbat", "x-MacGreek", "x-MacHebrew", "x-MacIceland", "x-MacRoman", "x-MacRomania", "x-MacSymbol", "x-MacThai", "x-MacTurkish", "x-MacUkraine", "x-IBM942", "x-IBM942C", "x-IBM943", "x-IBM943C", "x-IBM948", "x-IBM950", "x-IBM930", "x-IBM935", "x-IBM937", "x-IBM856", "x-IBM874", "x-IBM737", "x-IBM1006", "x-IBM1046", "x-IBM1098", "x-IBM1025", "x-IBM1112", "x-IBM1122", "x-IBM1123", "x-IBM1124", "x-IBM875", "x-IBM921", "x-IBM922", "x-IBM1097", "x-IBM949", "x-IBM949C", "x-IBM939", "x-IBM933", "x-IBM1381", "x-IBM1383", "x-IBM970", "x-IBM964", "x-IBM33722", "x-IBM1006", "x-IBM1046", "x-IBM1097", "x-IBM1098", "x-IBM1112", "x-IBM1122", "x-IBM1123", "x-IBM1124", "x-IBM33722", "x-IBM737", "x-IBM856", "x-IBM874", "x-IBM875", "x-IBM922", "x-IBM933", "x-IBM964" }; static void check(String csn, boolean testRegistered) throws Exception { if (!Charset.forName(csn).isRegistered() && testRegistered) throw new Exception("Not registered: " + csn); else if (Charset.forName(csn).isRegistered() && !testRegistered) throw new Exception("Registered: " + csn + "should be unregistered"); } static void aliasCheck(String canonicalName, String[] aliasNames) throws Exception { for (int k = 0; k < aliasNames.length; k++ ) { Charset cs = Charset.forName(aliasNames[k]); if (!cs.name().equals(canonicalName)) { throw new Exception("Unexpected Canonical name " + canonicalName); } } } public static void main(String[] args) throws Exception { for (int i = 0; i < ianaRegistered.length ; i++) check(ianaRegistered[i], true); for (int i = 0; i < ianaUnRegistered.length ; i++) check(ianaUnRegistered[i], false); // Check aliases registered with IANA for all NIO supported // Charset implementations. // // The aliases below are in sync with the IANA registered charset // document at: http://www.iana.org/assignments/character-sets // Last updated 7/25/2002 aliasCheck("US-ASCII", new String[] {"ascii","ANSI_X3.4-1968", "iso-ir-6","ANSI_X3.4-1986", "ISO_646.irv:1991", "ASCII", "ISO646-US","us","IBM367","cp367", "csASCII", "default"}); aliasCheck("UTF-8", new String[] { "UTF8", "unicode-1-1-utf-8" }); aliasCheck("UTF-16", new String[] { "UTF_16", "utf16" }); aliasCheck("UTF-16BE", new String[] { "UTF_16BE", "ISO-10646-UCS-2", "X-UTF-16BE", "UnicodeBigUnmarked" }); aliasCheck("UTF-16LE", new String[] { "UTF_16LE", "X-UTF-16LE", "UnicodeLittleUnmarked" }); aliasCheck("Big5", new String[] { "csBig5" }); aliasCheck("Big5-HKSCS", new String[] { "Big5_HKSCS", "big5hk", "big5-hkscs", "big5hkscs" }); aliasCheck("x-MS950-HKSCS", new String[] { "MS950_HKSCS" }); aliasCheck("GB18030", new String[] { "gb18030-2000" }); aliasCheck("ISO-2022-KR", new String[] {"csISO2022KR"}); aliasCheck("ISO-2022-JP", new String[] {"csISO2022JP"}); aliasCheck("EUC-KR", new String[] { "csEUCKR"}); aliasCheck("ISO-8859-1", new String[] { // IANA aliases "iso-ir-100", "ISO_8859-1", "latin1", "l1", "IBM819", "cp819", "csISOLatin1", // JDK historical aliases "819", "IBM-819", "ISO8859_1", "ISO_8859-1:1987", "ISO_8859_1", "8859_1", "ISO8859-1", }); aliasCheck("ISO-8859-2", new String[] { "ISO_8859-2", "ISO_8859-2:1987", "iso-ir-101", "latin2", "l2", "8859_2", "iso_8859-2:1987", "iso8859-2", "ibm912", "ibm-912", "cp912", "912", "csISOLatin2"}); aliasCheck("ISO-8859-3", new String[] {"latin3", "ISO_8859-3:1988", "iso-ir-109", "l3", "8859_3", "iso_8859-3:1988", "iso8859-3", "ibm913", "ibm-913", "cp913", "913", "csISOLatin3"}); aliasCheck("ISO-8859-4", new String[] {"csISOLatin4", "ISO_8859-4:1988", "iso-ir-110", "latin4", "8859_4", "iso_8859-4:1988", "iso8859-4", "ibm914", "ibm-914", "cp914", "914", "l4"}); aliasCheck("ISO-8859-5", new String[] { "iso8859_5", // JDK historical "8859_5", "iso-ir-144", "ISO_8859-5", "ISO_8859-5:1988", "ISO8859-5", "cyrillic", "ibm915", "ibm-915", "915", "cp915", "csISOLatinCyrillic" }); aliasCheck("ISO-8859-6", new String[] {"ISO_8859-6:1987", "iso-ir-127", "ISO_8859-6", "ECMA-114", "ASMO-708", "arabic", "8859_6", "iso_8859-6:1987", "iso8859-6", "ibm1089", "ibm-1089", "cp1089", "1089", "csISOLatinArabic"}); aliasCheck("ISO-8859-7", new String[] {"ISO_8859-7:1987", "iso-ir-126", "ISO_8859-7", "ELOT_928", "ECMA-118", "greek", "greek8", "8859_7", "iso_8859-7:1987", "iso8859-7", "ibm813", "ibm-813", "cp813", "813", "csISOLatinGreek"}); aliasCheck("ISO-8859-8", new String[] { "ISO_8859-8:1988", "iso-ir-138", "ISO_8859-8", "hebrew", "8859_8", "iso_8859-8:1988", "iso8859-8", "ibm916", "ibm-916", "cp916", "916", "csISOLatinHebrew"}); aliasCheck("ISO-8859-9", new String[] {"ISO_8859-9:1989", "iso-ir-148", "ISO_8859-9", "latin5", "l5", "8859_9", "iso8859-9", "ibm920", "ibm-920", "cp920", "920", "csISOLatin5"}); aliasCheck("ISO-8859-13", new String[] { "iso8859_13", // JDK historical "iso_8859-13", "8859_13", "ISO8859-13" }); aliasCheck("ISO-8859-15", new String[] { // IANA alias "ISO_8859-15", // JDK historical aliases "8859_15", "ISO-8859-15", "ISO_8859-15", "ISO8859-15", "ISO8859_15", "IBM923", "IBM-923", "cp923", "923", "LATIN0", "LATIN9", "L9", "csISOlatin0", "csISOlatin9", "ISO8859_15_FDIS" }); aliasCheck("JIS_X0212-1990", new String[] { "iso-ir-159", "csISO159JISX02121990"}); aliasCheck("JIS_X0201", new String[]{ "X0201", "csHalfWidthKatakana"}); aliasCheck("KOI8-R", new String[] { "KOI8_R", "csKOI8R"}); aliasCheck("GBK", new String[] { "windows-936"}); aliasCheck("Shift_JIS", new String[] { "MS_Kanji", "csShiftJIS"}); aliasCheck("EUC-JP", new String[] { "Extended_UNIX_Code_Packed_Format_for_Japanese", "csEUCPkdFmtJapanese"}); aliasCheck("Big5", new String[] {"csBig5"}); aliasCheck("windows-31j", new String[] {"csWindows31J"}); aliasCheck("x-iso-8859-11", new String[] { "iso-8859-11", "iso8859_11" }); aliasCheck("windows-1250", new String[] { "cp1250", "cp5346" }); aliasCheck("windows-1251", new String[] { "cp1251", "cp5347", "ansi-1251" }); aliasCheck("windows-1252", new String[] { "cp1252", "cp5348" }); aliasCheck("windows-1253", new String[] { "cp1253", "cp5349" }); aliasCheck("windows-1254", new String[] { "cp1254", "cp5350" }); aliasCheck("windows-1255", new String[] { "cp1255" }); aliasCheck("windows-1256", new String[] { "cp1256" }); aliasCheck("windows-1257", new String[] { "cp1257", "cp5353" }); aliasCheck("windows-1258", new String[] { "cp1258" }); aliasCheck("x-windows-874", new String[] { "ms874", "ms-874", "windows-874" }); aliasCheck("GB2312", new String[] { "x-EUC-CN", "gb2312-80", "gb2312-1980", "euc-cn", "euccn" }); aliasCheck("x-IBM942" , new String[] { "cp942", // JDK historical "ibm942", "ibm-942", "942" }); aliasCheck("x-IBM942C" , new String[] { "cp942C", // JDK historical "ibm942C", "ibm-942C", "942C" } ); aliasCheck("x-IBM943" , new String[] { "cp943", // JDK historical "ibm943", "ibm-943", "943" } ); aliasCheck("x-IBM943C" , new String[] { "cp943c", // JDK historical "ibm943C", "ibm-943C", "943C" } ); aliasCheck("x-IBM948" , new String[] { "cp948", // JDK historical "ibm948", "ibm-948", "948" } ); aliasCheck("x-IBM950" , new String[] { "cp950", // JDK historical "ibm950", "ibm-950", "950" } ); aliasCheck("x-IBM930" , new String[] { "cp930", // JDK historical "ibm930", "ibm-930", "930" } ); aliasCheck("x-IBM935" , new String[] { "cp935", // JDK historical "ibm935", "ibm-935", "935" } ); aliasCheck("x-IBM937" , new String[] { "cp937", // JDK historical "ibm937", "ibm-937", "937" } ); aliasCheck("IBM850" , new String[] { "cp850", // JDK historical "ibm-850", "ibm850", "850", "cspc850multilingual" } ); aliasCheck("IBM852" , new String[] { "cp852", // JDK historical "ibm852", "ibm-852", "852", "csPCp852" } ); aliasCheck("IBM855" , new String[] { "cp855", // JDK historical "ibm-855", "ibm855", "855", "cspcp855" } ); aliasCheck("x-IBM856" , new String[] { "cp856", // JDK historical "ibm-856", "ibm856", "856" } ); aliasCheck("IBM857" , new String[] { "cp857", // JDK historical "ibm857", "ibm-857", "857", "csIBM857" } ); aliasCheck("IBM860" , new String[] { "cp860", // JDK historical "ibm860", "ibm-860", "860", "csIBM860" } ); aliasCheck("IBM861" , new String[] { "cp861", // JDK historical "ibm861", "ibm-861", "861", "csIBM861" } ); aliasCheck("IBM862" , new String[] { "cp862", // JDK historical "ibm862", "ibm-862", "862", "csIBM862" } ); aliasCheck("IBM863" , new String[] { "cp863", // JDK historical "ibm863", "ibm-863", "863", "csIBM863" } ); aliasCheck("IBM864" , new String[] { "cp864", // JDK historical "ibm864", "ibm-864", "864", "csIBM864" } ); aliasCheck("IBM865" , new String[] { "cp865", // JDK historical "ibm865", "ibm-865", "865", "csIBM865" } ); aliasCheck("IBM866" , new String[] { "cp866", // JDK historical "ibm866", "ibm-866", "866", "csIBM866" } ); aliasCheck("IBM868" , new String[] { "cp868", // JDK historical "ibm868", "ibm-868", "868", "cp-ar", "csIBM868" } ); aliasCheck("IBM869" , new String[] { "cp869", // JDK historical "ibm869", "ibm-869", "869", "cp-gr", "csIBM869" } ); aliasCheck("IBM437" , new String[] { "cp437", // JDK historical "ibm437", "ibm-437", "437", "cspc8codepage437", "windows-437" } ); aliasCheck("x-IBM874" , new String[] { "cp874", // JDK historical "ibm874", "ibm-874", "874" } ); aliasCheck("x-IBM737" , new String[] { "cp737", // JDK historical "ibm737", "ibm-737", "737" } ); aliasCheck("IBM775" , new String[] { "cp775", // JDK historical "ibm775", "ibm-775", "775" } ); aliasCheck("x-IBM921" , new String[] { "cp921", // JDK historical "ibm921", "ibm-921", "921" } ); aliasCheck("x-IBM1006" , new String[] { "cp1006", // JDK historical "ibm1006", "ibm-1006", "1006" } ); aliasCheck("x-IBM1046" , new String[] { "cp1046", // JDK historical "ibm1046", "ibm-1046", "1046" } ); aliasCheck("IBM1047" , new String[] { "cp1047", // JDK historical "ibm-1047", "1047" } ); aliasCheck("x-IBM1098" , new String[] { "cp1098", // JDK historical "ibm1098", "ibm-1098", "1098", } ); aliasCheck("IBM037" , new String[] { "cp037", // JDK historical "ibm037", "csIBM037", "cs-ebcdic-cp-us", "cs-ebcdic-cp-ca", "cs-ebcdic-cp-wt", "cs-ebcdic-cp-nl", "ibm-037", "ibm-37", "cpibm37", "037" } ); aliasCheck("x-IBM1025" , new String[] { "cp1025", // JDK historical "ibm1025", "ibm-1025", "1025" } ); aliasCheck("IBM1026" , new String[] { "cp1026", // JDK historical "ibm1026", "ibm-1026", "1026" } ); aliasCheck("x-IBM1112" , new String[] { "cp1112", // JDK historical "ibm1112", "ibm-1112", "1112" } ); aliasCheck("x-IBM1122" , new String[] { "cp1122", // JDK historical "ibm1122", "ibm-1122", "1122" } ); aliasCheck("x-IBM1123" , new String[] { "cp1123", // JDK historical "ibm1123", "ibm-1123", "1123" } ); aliasCheck("x-IBM1124" , new String[] { "cp1124", // JDK historical "ibm1124", "ibm-1124", "1124" } ); aliasCheck("IBM273" , new String[] { "cp273", // JDK historical "ibm273", "ibm-273", "273" } ); aliasCheck("IBM277" , new String[] { "cp277", // JDK historical "ibm277", "ibm-277", "277" } ); aliasCheck("IBM278" , new String[] { "cp278", // JDK historical "ibm278", "ibm-278", "278", "ebcdic-sv", "ebcdic-cp-se", "csIBM278" } ); aliasCheck("IBM280" , new String[] { "cp280", // JDK historical "ibm280", "ibm-280", "280" } ); aliasCheck("IBM284" , new String[] { "cp284", // JDK historical "ibm284", "ibm-284", "284", "csIBM284", "cpibm284" } ); aliasCheck("IBM285" , new String[] { "cp285", // JDK historical "ibm285", "ibm-285", "285", "ebcdic-cp-gb", "ebcdic-gb", "csIBM285", "cpibm285" } ); aliasCheck("IBM297" , new String[] { "cp297", // JDK historical "ibm297", "ibm-297", "297", "ebcdic-cp-fr", "cpibm297", "csIBM297", } ); aliasCheck("IBM420" , new String[] { "cp420", // JDK historical "ibm420", "ibm-420", "ebcdic-cp-ar1", "420", "csIBM420" } ); aliasCheck("IBM424" , new String[] { "cp424", // JDK historical "ibm424", "ibm-424", "424", "ebcdic-cp-he", "csIBM424" } ); aliasCheck("IBM500" , new String[] { "cp500", // JDK historical "ibm500", "ibm-500", "500", "ebcdic-cp-ch", "ebcdic-cp-bh", "csIBM500" } ); aliasCheck("IBM-Thai" , new String[] { "cp838", // JDK historical "ibm838", "ibm-838", "ibm838", "838" } ); aliasCheck("IBM870" , new String[] { "cp870", // JDK historical "ibm870", "ibm-870", "870", "ebcdic-cp-roece", "ebcdic-cp-yu", "csIBM870" } ); aliasCheck("IBM871" , new String[] { "cp871", // JDK historical "ibm871", "ibm-871", "871", "ebcdic-cp-is", "csIBM871" } ); aliasCheck("x-IBM875" , new String[] { "cp875", // JDK historical "ibm875", "ibm-875", "875" } ); aliasCheck("IBM918" , new String[] { "cp918", // JDK historical "ibm-918", "918", "ebcdic-cp-ar2" } ); aliasCheck("x-IBM922" , new String[] { "cp922", // JDK historical "ibm922", "ibm-922", "922" } ); aliasCheck("x-IBM1097" , new String[] { "cp1097", // JDK historical "ibm1097", "ibm-1097", "1097" } ); aliasCheck("x-IBM949" , new String[] { "cp949", // JDK historical "ibm949", "ibm-949", "949" } ); aliasCheck("x-IBM949C" , new String[] { "cp949C", // JDK historical "ibm949C", "ibm-949C", "949C" } ); aliasCheck("x-IBM939" , new String[] { "cp939", // JDK historical "ibm939", "ibm-939", "939" } ); aliasCheck("x-IBM933" , new String[] { "cp933", // JDK historical "ibm933", "ibm-933", "933" } ); aliasCheck("x-IBM1381" , new String[] { "cp1381", // JDK historical "ibm1381", "ibm-1381", "1381" } ); aliasCheck("x-IBM1383" , new String[] { "cp1383", // JDK historical "ibm1383", "ibm-1383", "1383" } ); aliasCheck("x-IBM970" , new String[] { "cp970", // JDK historical "ibm970", "ibm-970", "ibm-eucKR", "970" } ); aliasCheck("x-IBM964" , new String[] { "cp964", // JDK historical "ibm964", "ibm-964", "964" } ); aliasCheck("x-IBM33722" , new String[] { "cp33722", // JDK historical "ibm33722", "ibm-33722", "ibm-5050", // from IBM alias list "ibm-33722_vascii_vpua", // from IBM alias list "33722" } ); aliasCheck("IBM01140" , new String[] { "cp1140", // JDK historical "ccsid01140", "cp01140", // "ebcdic-us-037+euro" } ); aliasCheck("IBM01141" , new String[] { "cp1141", // JDK historical "ccsid01141", "cp01141", // "ebcdic-de-273+euro" } ); aliasCheck("IBM01142" , new String[] { "cp1142", // JDK historical "ccsid01142", "cp01142", // "ebcdic-no-277+euro", // "ebcdic-dk-277+euro" } ); aliasCheck("IBM01143" , new String[] { "cp1143", // JDK historical "ccsid01143", "cp01143", // "ebcdic-fi-278+euro", // "ebcdic-se-278+euro" } ); aliasCheck("IBM01144" , new String[] { "cp1144", // JDK historical "ccsid01144", "cp01144", // "ebcdic-it-280+euro" } ); aliasCheck("IBM01145" , new String[] { "cp1145", // JDK historical "ccsid01145", "cp01145", // "ebcdic-es-284+euro" } ); aliasCheck("IBM01146" , new String[] { "cp1146", // JDK historical "ccsid01146", "cp01146", // "ebcdic-gb-285+euro" } ); aliasCheck("IBM01147" , new String[] { "cp1147", // JDK historical "ccsid01147", "cp01147", // "ebcdic-fr-277+euro" } ); aliasCheck("IBM01148" , new String[] { "cp1148", // JDK historical "ccsid01148", "cp01148", // "ebcdic-international-500+euro" } ); aliasCheck("IBM01149" , new String[] { "cp1149", // JDK historical "ccsid01149", "cp01149", // "ebcdic-s-871+euro" } ); aliasCheck("IBM00858" , new String[] { "cp858", // JDK historical "ccsid00858", "cp00858", // "PC-Multilingual-850+euro" } ); aliasCheck("x-MacRoman", new String[] { "MacRoman" // JDK historical }); aliasCheck("x-MacCentralEurope", new String[] { "MacCentralEurope" // JDK historical }); aliasCheck("x-MacCroatian", new String[] { "MacCroatian" // JDK historical }); aliasCheck("x-MacCroatian", new String[] { "MacCroatian" // JDK historical }); aliasCheck("x-MacGreek", new String[] { "MacGreek" // JDK historical }); aliasCheck("x-MacCyrillic", new String[] { "MacCyrillic" // JDK historical }); aliasCheck("x-MacUkraine", new String[] { "MacUkraine" // JDK historical }); aliasCheck("x-MacTurkish", new String[] { "MacTurkish" // JDK historical }); aliasCheck("x-MacArabic", new String[] { "MacArabic" // JDK historical }); aliasCheck("x-MacHebrew", new String[] { "MacHebrew" // JDK historical }); aliasCheck("x-MacIceland", new String[] { "MacIceland" // JDK historical }); aliasCheck("x-MacRomania", new String[] { "MacRomania" // JDK historical }); aliasCheck("x-MacThai", new String[] { "MacThai" // JDK historical }); aliasCheck("x-MacSymbol", new String[] { "MacSymbol" // JDK historical }); aliasCheck("x-MacDingbat", new String[] { "MacDingbat" // JDK historical }); } }