1 /* 2 * Copyright (c) 2008, 2020, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* @test 25 * @bug 4513767 4961027 6217210 8242541 26 * @summary Checks canonical names match between old and (NIO) core charsets 27 * @modules jdk.charsets 28 */ 29 import java.io.InputStreamReader; 30 import java.io.IOException; 31 import java.nio.charset.Charset; 32 import java.nio.charset.UnsupportedCharsetException; 33 34 public class CheckHistoricalNames { 35 static int failed = 0; 36 public static void main (String[] args) throws Exception { 37 checkHistoricalName("ASCII"); 38 checkHistoricalName("Cp1252"); 39 checkHistoricalName("ISO8859_1"); 40 checkHistoricalName("UnicodeBigUnmarked"); 41 checkHistoricalName("UnicodeLittle"); 42 checkHistoricalName("UnicodeLittleUnmarked"); 43 checkHistoricalName("UTF8"); 44 checkHistoricalName("UTF-16"); 45 46 checkMappedName("UnicodeBig", "UTF-16"); 47 checkMappedName("US-ASCII", "ASCII"); 48 checkMappedName("ISO-8859-1", "ISO8859_1"); 49 checkMappedName("UTF-8", "UTF8"); 50 checkMappedName("UTF-16BE", "UnicodeBigUnmarked"); 51 checkMappedName("UTF-16LE", "UnicodeLittleUnmarked"); 52 53 checkHistoricalName("ISO8859_2"); 54 checkHistoricalName("ISO8859_4"); 55 checkHistoricalName("ISO8859_5"); 56 checkHistoricalName("ISO8859_7"); 57 checkHistoricalName("ISO8859_9"); 58 checkHistoricalName("ISO8859_13"); 59 checkHistoricalName("KOI8_R"); 60 checkHistoricalName("Cp1250"); 61 checkHistoricalName("Cp1251"); 62 checkHistoricalName("Cp1253"); 63 checkHistoricalName("Cp1254"); 64 checkHistoricalName("Cp1257"); 65 66 checkMappedName("ISO-8859-2", "ISO8859_2"); 67 checkMappedName("ISO-8859-4", "ISO8859_4"); 68 checkMappedName("ISO-8859-5", "ISO8859_5"); 69 checkMappedName("ISO-8859-7", "ISO8859_7"); 70 checkMappedName("ISO-8859-9", "ISO8859_9"); 71 checkMappedName("ISO-8859-13", "ISO8859_13"); 72 checkMappedName("KOI8-R", "KOI8_R"); 73 checkMappedName("windows-1250", "Cp1250"); 74 checkMappedName("windows-1251","Cp1251"); 75 checkMappedName("windows-1253", "Cp1253"); 76 checkMappedName("windows-1254", "Cp1254"); 77 checkMappedName("windows-1257", "Cp1257"); 78 79 checkHistoricalName("EUC_CN"); 80 checkHistoricalName("EUC_JP"); 81 checkHistoricalName("EUC_JP_LINUX"); 82 checkHistoricalName("EUC_KR"); 83 checkHistoricalName("EUC_TW"); 84 checkHistoricalName("ISO2022CN"); 85 checkHistoricalName("ISO2022JP"); 86 checkHistoricalName("ISO2022KR"); 87 checkHistoricalName("ISO8859_3"); 88 checkHistoricalName("ISO8859_6"); 89 checkHistoricalName("ISO8859_8"); 90 checkHistoricalName("Cp1255"); 91 checkHistoricalName("Cp1256"); 92 checkHistoricalName("Cp1258"); 93 checkHistoricalName("MS936"); 94 checkHistoricalName("MS949"); 95 checkHistoricalName("MS950"); 96 checkHistoricalName("TIS620"); 97 98 checkMappedName("EUC-CN", "EUC_CN"); 99 checkMappedName("EUC-JP", "EUC_JP"); 100 checkMappedName("EUC-JP-LINUX", "EUC_JP_LINUX"); 101 checkMappedName("EUC-TW", "EUC_TW"); 102 checkMappedName("EUC-KR", "EUC_KR"); 103 checkMappedName("ISO-2022-CN", "ISO2022CN"); 104 checkMappedName("ISO-2022-JP", "ISO2022JP"); 105 checkMappedName("ISO-2022-KR", "ISO2022KR"); 106 checkMappedName("ISO-8859-3", "ISO8859_3"); 107 checkMappedName("ISO-8859-6", "ISO8859_6"); 108 checkMappedName("ISO-8859-8", "ISO8859_8"); 109 checkMappedName("windows-1255", "Cp1255"); 110 checkMappedName("windows-1256", "Cp1256"); 111 checkMappedName("windows-1258", "Cp1258"); 112 checkMappedName("windows-936", "GBK"); 113 checkMappedName("windows-949", "MS949"); 114 checkMappedName("windows-950", "MS950"); 115 checkMappedName("x-MS950-HKSCS", "MS950_HKSCS"); 116 checkMappedName("x-PCK", "PCK"); 117 checkMappedName("Shift_JIS", "SJIS"); 118 checkMappedName("x-JISAutoDetect", "JISAutoDetect"); 119 checkMappedName("TIS-620", "TIS620"); 120 checkMappedName("x-Big5-Solaris", "Big5_Solaris"); 121 122 checkHistoricalName("Cp037"); 123 checkHistoricalName("Cp1006"); 124 checkHistoricalName("Cp1025"); 125 checkHistoricalName("Cp1026"); 126 checkHistoricalName("Cp1046"); 127 checkHistoricalName("Cp1047"); 128 checkHistoricalName("Cp1097"); 129 checkHistoricalName("Cp1098"); 130 checkHistoricalName("Cp1112"); 131 checkHistoricalName("Cp1122"); 132 checkHistoricalName("Cp1123"); 133 checkHistoricalName("Cp1124"); 134 checkHistoricalName("Cp1140"); 135 checkHistoricalName("Cp1141"); 136 checkHistoricalName("Cp1142"); 137 checkHistoricalName("Cp1143"); 138 checkHistoricalName("Cp1144"); 139 checkHistoricalName("Cp1145"); 140 checkHistoricalName("Cp1146"); 141 checkHistoricalName("Cp1147"); 142 checkHistoricalName("Cp1148"); 143 checkHistoricalName("Cp1149"); 144 checkHistoricalName("Cp1381"); 145 checkHistoricalName("Cp1383"); 146 checkHistoricalName("Cp273"); 147 checkHistoricalName("Cp277"); 148 checkHistoricalName("Cp278"); 149 checkHistoricalName("Cp280"); 150 checkHistoricalName("Cp284"); 151 checkHistoricalName("Cp285"); 152 checkHistoricalName("Cp297"); 153 checkHistoricalName("Cp33722"); 154 checkHistoricalName("Cp420"); 155 checkHistoricalName("Cp424"); 156 checkHistoricalName("Cp437"); 157 checkHistoricalName("Cp500"); 158 checkHistoricalName("Cp737"); 159 checkHistoricalName("Cp775"); 160 checkHistoricalName("Cp833"); 161 checkHistoricalName("Cp838"); 162 checkHistoricalName("Cp850"); 163 checkHistoricalName("Cp852"); 164 checkHistoricalName("Cp855"); 165 checkHistoricalName("Cp856"); 166 checkHistoricalName("Cp857"); 167 checkHistoricalName("Cp858"); 168 checkHistoricalName("Cp860"); 169 checkHistoricalName("Cp861"); 170 checkHistoricalName("Cp862"); 171 checkHistoricalName("Cp863"); 172 checkHistoricalName("Cp864"); 173 checkHistoricalName("Cp865"); 174 checkHistoricalName("Cp866"); 175 checkHistoricalName("Cp868"); 176 checkHistoricalName("Cp869"); 177 checkHistoricalName("Cp870"); 178 checkHistoricalName("Cp871"); 179 checkHistoricalName("Cp874"); 180 checkHistoricalName("Cp875"); 181 checkHistoricalName("Cp918"); 182 checkHistoricalName("Cp921"); 183 checkHistoricalName("Cp922"); 184 checkHistoricalName("Cp933"); 185 checkHistoricalName("Cp939"); 186 checkHistoricalName("Cp949"); 187 checkHistoricalName("Cp964"); 188 checkHistoricalName("Cp970"); 189 190 checkMappedName("IBM037", "Cp037"); 191 checkMappedName("IBM1006", "Cp1006"); 192 checkMappedName("IBM1025", "Cp1025"); 193 checkMappedName("IBM1026", "Cp1026"); 194 checkMappedName("x-IBM1046", "Cp1046"); 195 checkMappedName("IBM1047", "Cp1047"); 196 checkMappedName("IBM1097", "Cp1097"); 197 checkMappedName("IBM1098", "Cp1098"); 198 checkMappedName("IBM1112", "Cp1112"); 199 checkMappedName("IBM1122", "Cp1122"); 200 checkMappedName("IBM1123", "Cp1123"); 201 checkMappedName("IBM1124", "Cp1124"); 202 checkMappedName("IBM1129", "Cp1129"); 203 checkMappedName("IBM1166", "Cp1166"); 204 checkMappedName("IBM01140", "Cp1140"); 205 checkMappedName("IBM01141", "Cp1141"); 206 checkMappedName("IBM01142", "Cp1142"); 207 checkMappedName("IBM01143", "Cp1143"); 208 checkMappedName("IBM01144", "Cp1144"); 209 checkMappedName("IBM01145", "Cp1145"); 210 checkMappedName("IBM01146", "Cp1146"); 211 checkMappedName("IBM01147", "Cp1147"); 212 checkMappedName("IBM01148", "Cp1148"); 213 checkMappedName("IBM01149", "Cp1149"); 214 checkMappedName("IBM1381", "Cp1381"); 215 checkMappedName("IBM1383", "Cp1383"); 216 checkMappedName("IBM273", "Cp273"); 217 checkMappedName("IBM277", "Cp277"); 218 checkMappedName("IBM278", "Cp278"); 219 checkMappedName("IBM280", "Cp280"); 220 checkMappedName("IBM284", "Cp284"); 221 checkMappedName("IBM285", "Cp285"); 222 checkMappedName("IBM297", "Cp297"); 223 checkMappedName("IBM33722", "Cp33722"); 224 checkMappedName("IBM420", "Cp420"); 225 checkMappedName("IBM424", "Cp424"); 226 checkMappedName("IBM437", "Cp437"); 227 checkMappedName("IBM500", "Cp500"); 228 checkMappedName("IBM737", "Cp737"); 229 checkMappedName("IBM775", "Cp775"); 230 checkMappedName("IBM838", "Cp838"); 231 checkMappedName("IBM850", "Cp850"); 232 checkMappedName("IBM852", "Cp852"); 233 checkMappedName("IBM855", "Cp855"); 234 checkMappedName("IBM856", "Cp856"); 235 checkMappedName("IBM857", "Cp857"); 236 checkMappedName("IBM00858", "Cp858"); 237 checkMappedName("IBM833", "Cp833"); 238 checkMappedName("IBM860", "Cp860"); 239 checkMappedName("IBM861", "Cp861"); 240 checkMappedName("IBM862", "Cp862"); 241 checkMappedName("IBM863", "Cp863"); 242 checkMappedName("IBM864", "Cp864"); 243 checkMappedName("IBM865", "Cp865"); 244 checkMappedName("IBM866", "Cp866"); 245 checkMappedName("IBM868", "Cp868"); 246 checkMappedName("IBM869", "Cp869"); 247 checkMappedName("IBM870", "Cp870"); 248 checkMappedName("IBM871", "Cp871"); 249 checkMappedName("IBM874", "Cp874"); 250 checkMappedName("IBM875", "Cp875"); 251 checkMappedName("IBM918", "Cp918"); 252 checkMappedName("IBM921", "Cp921"); 253 checkMappedName("IBM922", "Cp922"); 254 checkMappedName("x-IBM930", "Cp930"); 255 checkMappedName("IBM933", "Cp933"); 256 checkMappedName("x-IBM935", "Cp935"); 257 checkMappedName("x-IBM937", "Cp937"); 258 checkMappedName("IBM939", "Cp939"); 259 checkMappedName("x-IBM942", "Cp942"); 260 checkMappedName("x-IBM942C", "Cp942C"); 261 checkMappedName("x-IBM943", "Cp943"); 262 checkMappedName("x-IBM943C", "Cp943C"); 263 checkMappedName("x-IBM948", "Cp948"); 264 checkMappedName("IBM949", "Cp949"); 265 checkMappedName("x-IBM949C", "Cp949C"); 266 checkMappedName("x-IBM950", "Cp950"); 267 checkMappedName("IBM964", "Cp964"); 268 checkMappedName("IBM970", "Cp970"); 269 270 checkHistoricalName("MacArabic"); 271 checkHistoricalName("MacCentralEurope"); 272 checkHistoricalName("MacCroatian"); 273 checkHistoricalName("MacCyrillic"); 274 checkHistoricalName("MacDingbat"); 275 checkHistoricalName("MacGreek"); 276 checkHistoricalName("MacHebrew"); 277 checkHistoricalName("MacIceland"); 278 checkHistoricalName("MacRoman"); 279 checkHistoricalName("MacRomania"); 280 checkHistoricalName("MacSymbol"); 281 checkHistoricalName("MacThai"); 282 checkHistoricalName("MacTurkish"); 283 checkHistoricalName("MacUkraine"); 284 285 checkMappedName("x-MacArabic", "MacArabic"); 286 checkMappedName("x-MacCentralEurope", "MacCentralEurope"); 287 checkMappedName("x-MacCroatian", "MacCroatian"); 288 checkMappedName("x-MacCyrillic", "MacCyrillic"); 289 checkMappedName("x-MacDingbat", "MacDingbat"); 290 checkMappedName("x-MacGreek", "MacGreek"); 291 checkMappedName("x-MacHebrew", "MacHebrew"); 292 checkMappedName("x-MacIceland", "MacIceland"); 293 checkMappedName("x-MacRoman", "MacRoman"); 294 checkMappedName("x-MacRomania", "MacRomania"); 295 checkMappedName("x-MacSymbol", "MacSymbol"); 296 checkMappedName("x-MacThai", "MacThai"); 297 checkMappedName("x-MacTurkish", "MacTurkish"); 298 checkMappedName("x-MacUkraine", "MacUkraine"); 299 checkCharsetAndHistoricalName(); 300 301 if (failed != 0) 302 throw new Exception("Test Failed: " + failed); 303 else 304 System.out.println("Test Passed!"); 305 } 306 307 private static void checkHistoricalName(String name) throws Exception { 308 checkMappedName(name, name); 309 } 310 311 private static void checkMappedName(String alias, String canonical) 312 throws Exception { 313 InputStreamReader reader = new InputStreamReader(System.in, alias); 314 if (!reader.getEncoding().equals(canonical)) { 315 System.out.println("Failed canonical names : mismatch for " + alias 316 + " - expected " + canonical 317 + ", got " + reader.getEncoding()); 318 failed++; 319 } 320 } 321 322 private static void checkCharsetAndHistoricalName() { 323 for (Charset cs : Charset.availableCharsets().values()) { 324 InputStreamReader isr = new InputStreamReader(System.in, cs); 325 String encoding = isr.getEncoding(); 326 try { 327 Charset csHist = Charset.forName(encoding); 328 if (!cs.equals(csHist)) { 329 System.out.println("Failed charset name" 330 + " - expected " + cs.name() 331 + ", got " + csHist.name()); 332 failed++; 333 } 334 } catch (UnsupportedCharsetException uce) { 335 System.out.println("Failed : charset - "+ cs.name() 336 + ", missing alias entry - " + encoding); 337 failed++; 338 } 339 } 340 } 341 }