blob: 73099d9acff75841bc40f4ff840fbc4a48fc7296 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1996-2006 Sun Microsystems, Inc. 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. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package sun.io;
27
28import java.util.Collections;
29import java.util.Iterator;
30import java.util.HashMap;
31import java.util.Locale;
32import java.util.Map;
33import java.security.AccessController;
34import java.security.PrivilegedAction;
35import sun.security.action.GetPropertyAction;
36
37/*
38 * This class is public in sun.io, so other sun.* packages (such as
39 * HotJava) can use it, without exposing it to java.*.
40 * Translates IANA encoding name to the string which is the part of
41 * converter class.
42 */
43
44/**
45 * @deprecated Replaced by {@link java.nio.charset}. THIS API WILL BE
46 * REMOVED IN J2SE 1.6.
47 */
48@Deprecated
49public class CharacterEncoding {
50
51 private static boolean sjisIsMS932;
52
53 private static Map aliasTable;
54 private static volatile boolean installedAll;
55
56 static {
57 aliasTable = new HashMap(460, 1.0f); /* MDA */
58
59 aliasTable.put("us-ascii", "ASCII");
60 aliasTable.put("ascii", "ASCII");
61 aliasTable.put("646", "ASCII"); // Solaris POSIX locale
62 aliasTable.put("iso_646.irv:1983", "ASCII"); // Linux POSIX locale
63 aliasTable.put("ansi_x3.4-1968", "ASCII"); // Caldera linux
64 aliasTable.put("iso646-us", "ASCII");
65 aliasTable.put("default", "ASCII"); // compatibility with obsolete "Default" converters
66 aliasTable.put("ascii7", "ASCII"); // compatibility with obsolete "Default" converters
67
68 // Core encodings
69 aliasTable.put("8859_1", "ISO8859_1");
70 aliasTable.put("iso8859_1", "ISO8859_1");
71 aliasTable.put("utf-8", "UTF8");
72 aliasTable.put("utf8", "UTF8");
73 aliasTable.put("utf-16le", "UnicodeLittleUnmarked");
74
75 // Standard encodings used on Solaris and Linux
76 aliasTable.put("iso8859-1", "ISO8859_1");
77 aliasTable.put("iso8859-2", "ISO8859_2");
78 aliasTable.put("iso8859-4", "ISO8859_4");
79 aliasTable.put("iso8859-5", "ISO8859_5");
80 aliasTable.put("iso8859-6", "ISO8859_6");
81 aliasTable.put("iso8859-8", "ISO8859_8");
82 aliasTable.put("iso8859-9", "ISO8859_9");
83 aliasTable.put("iso8859-13", "ISO8859_13");
84 aliasTable.put("iso8859-15", "ISO8859_15");
85 aliasTable.put("5601", "EUC_KR");
86 aliasTable.put("ansi-1251", "Cp1251");
87 aliasTable.put("big5", "Big5");
88 aliasTable.put("big5hk", "Big5_HKSCS");
89 aliasTable.put("eucjp", "EUC_JP");
90 aliasTable.put("cns11643", "EUC_TW");
91 aliasTable.put("gb2312", "EUC_CN");
92 aliasTable.put("gb18030", "GB18030");
93 aliasTable.put("gbk", "GBK");
94 aliasTable.put("koi8-r", "KOI8_R");
95 aliasTable.put("tis620.2533", "TIS620");
96
97 // Windows encodings
98 aliasTable.put("cp1250", "Cp1250");
99 aliasTable.put("cp1251", "Cp1251");
100 aliasTable.put("cp1252", "Cp1252");
101 aliasTable.put("cp1253", "Cp1253");
102 aliasTable.put("cp1254", "Cp1254");
103 aliasTable.put("cp1255", "Cp1255");
104 aliasTable.put("cp1256", "Cp1256");
105 aliasTable.put("cp1257", "Cp1257");
106 aliasTable.put("cp1258", "Cp1258");
107 aliasTable.put("ms874", "MS874");
108 aliasTable.put("ms932", "MS932");
109 aliasTable.put("ms949", "MS949");
110 aliasTable.put("ms950", "MS950");
111 aliasTable.put("ms1361", "MS1361");
112 }
113
114 public static String aliasName(String name){
115
116 if (name.startsWith("\1")) {
117 // Emergency access to old converters
118 name = name.substring(1);
119 }
120 // need to use Locale.US so we can load ISO converters in tr_TR locale
121 String lower = name.toLowerCase(Locale.US);
122 String val = (String) aliasTable.get(lower);
123
124 if (val == null && !installedAll) {
125 installAll();
126 val = (String) aliasTable.get(lower);
127 }
128 return val;
129 }
130
131 private static synchronized void installAll() {
132 if (!installedAll) {
133 GetPropertyAction a = new GetPropertyAction("sun.nio.cs.map");
134 String map = ((String)AccessController.doPrivileged(a));
135 if (map != null) {
136 sjisIsMS932 = map.equalsIgnoreCase("Windows-31J/Shift_JIS");
137 } else {
138 sjisIsMS932 = false;
139 }
140
141 // MIBenum: 4
142 aliasTable.put("8859_1", "ISO8859_1");
143 aliasTable.put("iso_8859-1:1987", "ISO8859_1");
144 aliasTable.put("iso-ir-100", "ISO8859_1");
145 aliasTable.put("iso_8859-1", "ISO8859_1");
146 aliasTable.put("iso-8859-1", "ISO8859_1");
147 aliasTable.put("iso8859-1", "ISO8859_1");
148 aliasTable.put("latin1", "ISO8859_1");
149 aliasTable.put("l1", "ISO8859_1");
150 aliasTable.put("ibm819", "ISO8859_1");
151 aliasTable.put("ibm-819", "ISO8859_1");
152 aliasTable.put("cp819", "ISO8859_1");
153 aliasTable.put("819", "ISO8859_1");
154 aliasTable.put("csisolatin1", "ISO8859_1");
155
156 // MIBenum: 5
157 aliasTable.put("8859_2", "ISO8859_2");
158 aliasTable.put("iso_8859-2:1987", "ISO8859_2");
159 aliasTable.put("iso-ir-101", "ISO8859_2");
160 aliasTable.put("iso_8859-2", "ISO8859_2");
161 aliasTable.put("iso-8859-2", "ISO8859_2");
162 aliasTable.put("iso8859-2", "ISO8859_2");
163 aliasTable.put("latin2", "ISO8859_2");
164 aliasTable.put("l2", "ISO8859_2");
165 aliasTable.put("ibm912", "ISO8859_2");
166 aliasTable.put("ibm-912", "ISO8859_2");
167 aliasTable.put("cp912", "ISO8859_2");
168 aliasTable.put("912", "ISO8859_2");
169 aliasTable.put("csisolatin2", "ISO8859_2");
170
171 // MIBenum: 6
172 aliasTable.put("8859_3", "ISO8859_3");
173 aliasTable.put("iso_8859-3:1988", "ISO8859_3");
174 aliasTable.put("iso-ir-109", "ISO8859_3");
175 aliasTable.put("iso_8859-3", "ISO8859_3");
176 aliasTable.put("iso-8859-3", "ISO8859_3");
177 aliasTable.put("iso8859-3", "ISO8859_3");
178 aliasTable.put("latin3", "ISO8859_3");
179 aliasTable.put("l3", "ISO8859_3");
180 aliasTable.put("ibm913", "ISO8859_3");
181 aliasTable.put("ibm-913", "ISO8859_3");
182 aliasTable.put("cp913", "ISO8859_3");
183 aliasTable.put("913", "ISO8859_3");
184 aliasTable.put("csisolatin3", "ISO8859_3");
185
186 // MIBenum: 7
187 aliasTable.put("8859_4", "ISO8859_4");
188 aliasTable.put("iso_8859-4:1988", "ISO8859_4");
189 aliasTable.put("iso-ir-110", "ISO8859_4");
190 aliasTable.put("iso_8859-4", "ISO8859_4");
191 aliasTable.put("iso-8859-4", "ISO8859_4");
192 aliasTable.put("iso8859-4", "ISO8859_4");
193 aliasTable.put("latin4", "ISO8859_4");
194 aliasTable.put("l4", "ISO8859_4");
195 aliasTable.put("ibm914", "ISO8859_4");
196 aliasTable.put("ibm-914", "ISO8859_4");
197 aliasTable.put("cp914", "ISO8859_4");
198 aliasTable.put("914", "ISO8859_4");
199 aliasTable.put("csisolatin4", "ISO8859_4");
200
201 // MIBenum: 8
202 aliasTable.put("8859_5", "ISO8859_5");
203 aliasTable.put("iso_8859-5:1988", "ISO8859_5");
204 aliasTable.put("iso-ir-144", "ISO8859_5");
205 aliasTable.put("iso_8859-5", "ISO8859_5");
206 aliasTable.put("iso-8859-5", "ISO8859_5");
207 aliasTable.put("iso8859-5", "ISO8859_5");
208 aliasTable.put("cyrillic", "ISO8859_5");
209 aliasTable.put("csisolatincyrillic", "ISO8859_5");
210 aliasTable.put("ibm915", "ISO8859_5");
211 aliasTable.put("ibm-915", "ISO8859_5");
212 aliasTable.put("cp915", "ISO8859_5");
213 aliasTable.put("915", "ISO8859_5");
214
215 // MIBenum: 9
216 aliasTable.put("8859_6", "ISO8859_6");
217 aliasTable.put("iso_8859-6:1987", "ISO8859_6");
218 aliasTable.put("iso-ir-127", "ISO8859_6");
219 aliasTable.put("iso_8859-6", "ISO8859_6");
220 aliasTable.put("iso-8859-6", "ISO8859_6");
221 aliasTable.put("iso8859-6", "ISO8859_6");
222 aliasTable.put("ecma-114", "ISO8859_6");
223 aliasTable.put("asmo-708", "ISO8859_6");
224 aliasTable.put("arabic", "ISO8859_6");
225 aliasTable.put("csisolatinarabic", "ISO8859_6");
226 aliasTable.put("ibm1089", "ISO8859_6");
227 aliasTable.put("ibm-1089", "ISO8859_6");
228 aliasTable.put("cp1089", "ISO8859_6");
229 aliasTable.put("1089", "ISO8859_6");
230
231 // MIBenum: 10
232 aliasTable.put("8859_7", "ISO8859_7");
233 aliasTable.put("iso_8859-7:1987", "ISO8859_7");
234 aliasTable.put("iso-ir-126", "ISO8859_7");
235 aliasTable.put("iso_8859-7", "ISO8859_7");
236 aliasTable.put("iso-8859-7", "ISO8859_7");
237 aliasTable.put("iso8859-7", "ISO8859_7");
238 aliasTable.put("elot_928", "ISO8859_7");
239 aliasTable.put("ecma-118", "ISO8859_7");
240 aliasTable.put("greek", "ISO8859_7");
241 aliasTable.put("greek8", "ISO8859_7");
242 aliasTable.put("csisolatingreek", "ISO8859_7");
243 aliasTable.put("ibm813", "ISO8859_7");
244 aliasTable.put("ibm-813", "ISO8859_7");
245 aliasTable.put("cp813", "ISO8859_7");
246 aliasTable.put("813", "ISO8859_7");
247 aliasTable.put("sun_eu_greek", "ISO8859_7");
248
249 // MIBenum: 11
250 aliasTable.put("8859_8", "ISO8859_8");
251 aliasTable.put("iso_8859-8:1988", "ISO8859_8");
252 aliasTable.put("iso-ir-138", "ISO8859_8");
253 aliasTable.put("iso_8859-8", "ISO8859_8");
254 aliasTable.put("iso-8859-8", "ISO8859_8");
255 aliasTable.put("iso8859-8", "ISO8859_8");
256 aliasTable.put("hebrew", "ISO8859_8");
257 aliasTable.put("csisolatinhebrew", "ISO8859_8");
258 aliasTable.put("ibm916", "ISO8859_8");
259 aliasTable.put("ibm-916", "ISO8859_8");
260 aliasTable.put("cp916", "ISO8859_8");
261 aliasTable.put("916", "ISO8859_8");
262
263 // MIBenum: 12
264 aliasTable.put("8859_9", "ISO8859_9");
265 aliasTable.put("iso-ir-148", "ISO8859_9");
266 aliasTable.put("iso_8859-9", "ISO8859_9");
267 aliasTable.put("iso-8859-9", "ISO8859_9");
268 aliasTable.put("iso8859-9", "ISO8859_9");
269 aliasTable.put("latin5", "ISO8859_9");
270 aliasTable.put("l5", "ISO8859_9");
271 aliasTable.put("ibm920", "ISO8859_9");
272 aliasTable.put("ibm-920", "ISO8859_9");
273 aliasTable.put("cp920", "ISO8859_9");
274 aliasTable.put("920", "ISO8859_9");
275 aliasTable.put("csisolatin5", "ISO8859_9");
276
277 // MIBenum: ???
278 aliasTable.put("8859_13", "ISO8859_13");
279 aliasTable.put("iso_8859-13", "ISO8859_13");
280 aliasTable.put("iso-8859-13", "ISO8859_13");
281 aliasTable.put("iso8859-13", "ISO8859_13");
282
283
284 // MIBenum: ????
285 aliasTable.put("8859_15", "ISO8859_15");
286 aliasTable.put("iso-8859-15", "ISO8859_15");
287 aliasTable.put("iso_8859-15", "ISO8859_15");
288 aliasTable.put("iso8859-15", "ISO8859_15");
289 aliasTable.put("ibm923", "ISO8859_15");
290 aliasTable.put("ibm-923", "ISO8859_15");
291 aliasTable.put("cp923", "ISO8859_15");
292 aliasTable.put("923", "ISO8859_15");
293 aliasTable.put("latin0", "ISO8859_15");
294 aliasTable.put("latin9", "ISO8859_15");
295 aliasTable.put("csisolatin0", "ISO8859_15");
296 aliasTable.put("csisolatin9", "ISO8859_15");
297
298 //For compatibility purpose
299 aliasTable.put("iso8859_15_fdis", "ISO8859_15");
300
301 // MIBenum: 106
302 aliasTable.put("utf-8", "UTF8");
303
304 // Alias recommended in RFC 1641
305 aliasTable.put("unicode-1-1-utf-8", "UTF8");
306
307 // MIBenum: 1010
308 aliasTable.put("unicode-1-1", "UnicodeBigUnmarked");
309
310 // MIBenum: 1000
311 aliasTable.put("iso-10646-ucs-2", "UnicodeBigUnmarked");
312
313 // Per Unicode standard
314 aliasTable.put("utf-16be", "UnicodeBigUnmarked");
315 aliasTable.put("utf-16le", "UnicodeLittleUnmarked");
316 aliasTable.put("utf-16", "UTF16");
317
318 // Used by drag-and-drop subsystem
319 aliasTable.put("x-utf-16be", "UnicodeBigUnmarked");
320 aliasTable.put("x-utf-16le", "UnicodeLittleUnmarked");
321
322 aliasTable.put("unicode", "Unicode");
323
324 // MIBenum: ????
325 aliasTable.put("ibm037", "Cp037");
326 aliasTable.put("ibm-037", "Cp037");
327 aliasTable.put("cp037", "Cp037");
328 aliasTable.put("037", "Cp037");
329
330 // MIBenum: ????
331 aliasTable.put("ibm273", "Cp273");
332 aliasTable.put("ibm-273", "Cp273");
333 aliasTable.put("cp273", "Cp273");
334 aliasTable.put("273", "Cp273");
335
336 // MIBenum: ????
337 aliasTable.put("ibm277", "Cp277");
338 aliasTable.put("ibm-277", "Cp277");
339 aliasTable.put("cp277", "Cp277");
340 aliasTable.put("277", "Cp277");
341
342 // MIBenum: ????
343 aliasTable.put("ibm278", "Cp278");
344 aliasTable.put("ibm-278", "Cp278");
345 aliasTable.put("cp278", "Cp278");
346 aliasTable.put("278", "Cp278");
347
348 // MIBenum: ????
349 aliasTable.put("ibm280", "Cp280");
350 aliasTable.put("ibm-280", "Cp280");
351 aliasTable.put("cp280", "Cp280");
352 aliasTable.put("280", "Cp280");
353
354 // MIBenum: ????
355 aliasTable.put("ibm284", "Cp284");
356 aliasTable.put("ibm-284", "Cp284");
357 aliasTable.put("cp284", "Cp284");
358 aliasTable.put("284", "Cp284");
359
360 // MIBenum: ????
361 aliasTable.put("ibm285", "Cp285");
362 aliasTable.put("ibm-285", "Cp285");
363 aliasTable.put("cp285", "Cp285");
364 aliasTable.put("285", "Cp285");
365
366 // MIBenum: ????
367 aliasTable.put("ibm297", "Cp297");
368 aliasTable.put("ibm-297", "Cp297");
369 aliasTable.put("cp297", "Cp297");
370 aliasTable.put("297", "Cp297");
371
372 // MIBenum: ????
373 aliasTable.put("ibm420", "Cp420");
374 aliasTable.put("ibm-420", "Cp420");
375 aliasTable.put("cp420", "Cp420");
376 aliasTable.put("420", "Cp420");
377
378 // MIBenum: ????
379 aliasTable.put("ibm424", "Cp424");
380 aliasTable.put("ibm-424", "Cp424");
381 aliasTable.put("cp424", "Cp424");
382 aliasTable.put("424", "Cp424");
383
384 // MIBenum: 2011
385 aliasTable.put("ibm437", "Cp437");
386 aliasTable.put("ibm-437", "Cp437");
387 aliasTable.put("cp437", "Cp437");
388 aliasTable.put("437", "Cp437");
389 aliasTable.put("cspc8codepage437", "Cp437");
390
391 // MIBenum: ????
392 aliasTable.put("ibm500", "Cp500");
393 aliasTable.put("ibm-500", "Cp500");
394 aliasTable.put("cp500", "Cp500");
395 aliasTable.put("500", "Cp500");
396
397 // MIBenum: ????
398 aliasTable.put("ibm737", "Cp737");
399 aliasTable.put("ibm-737", "Cp737");
400 aliasTable.put("cp737", "Cp737");
401 aliasTable.put("737", "Cp737");
402
403 // MIBenum: ????
404 aliasTable.put("ibm775", "Cp775");
405 aliasTable.put("ibm-775", "Cp775");
406 aliasTable.put("cp775", "Cp775");
407 aliasTable.put("775", "Cp775");
408
409 aliasTable.put("ibm834", "Cp834");
410 aliasTable.put("ibm-834", "Cp834");
411 aliasTable.put("cp834", "Cp834");
412 aliasTable.put("834", "Cp834");
413
414 // MIBenum: ????
415 aliasTable.put("ibm838", "Cp838"); /* MDA */
416 aliasTable.put("ibm-838", "Cp838"); /* MDA */
417 aliasTable.put("cp838", "Cp838"); /* MDA */
418 aliasTable.put("838", "Cp838"); /* MDA */
419
420 // "Cp850"
421 // MIBenum: 2009
422 aliasTable.put("ibm850", "Cp850");
423 aliasTable.put("ibm-850", "Cp850");
424 aliasTable.put("cp850", "Cp850");
425 aliasTable.put("850", "Cp850");
426 aliasTable.put("cspc850multilingual", "Cp850");
427
428 // "Cp852"
429 // MIBenum: 2010
430 aliasTable.put("ibm852", "Cp852");
431 aliasTable.put("ibm-852", "Cp852");
432 aliasTable.put("cp852", "Cp852");
433 aliasTable.put("852", "Cp852");
434 aliasTable.put("cspcp852", "Cp852");
435
436 // "Cp855"
437 // MIBenum: 2046
438 aliasTable.put("ibm855", "Cp855");
439 aliasTable.put("ibm-855", "Cp855");
440 aliasTable.put("cp855", "Cp855");
441 aliasTable.put("855", "Cp855");
442 aliasTable.put("cspcp855", "Cp855");
443
444 // "Cp855"
445 // MIBenum: ???
446 aliasTable.put("ibm856", "Cp856");
447 aliasTable.put("ibm-856", "Cp856");
448 aliasTable.put("cp856", "Cp856");
449 aliasTable.put("856", "Cp856");
450
451 // "Cp857"
452 // MIBenum: 2047
453 aliasTable.put("ibm857", "Cp857");
454 aliasTable.put("ibm-857", "Cp857");
455 aliasTable.put("cp857", "Cp857");
456 aliasTable.put("857", "Cp857");
457 aliasTable.put("csibm857", "Cp857");
458
459 // "Cp860"
460 // MIBenum: 2048
461 aliasTable.put("ibm860", "Cp860");
462 aliasTable.put("ibm-860", "Cp860");
463 aliasTable.put("cp860", "Cp860");
464 aliasTable.put("860", "Cp860");
465 aliasTable.put("csibm860", "Cp860");
466
467 // MIBenum: 2049
468 aliasTable.put("ibm861", "Cp861");
469 aliasTable.put("ibm-861", "Cp861");
470 aliasTable.put("cp861", "Cp861");
471 aliasTable.put("cp-is", "Cp861");
472 aliasTable.put("861", "Cp861");
473 aliasTable.put("csibm861", "Cp861");
474
475 // MIBenum: 2013
476 aliasTable.put("ibm862", "Cp862");
477 aliasTable.put("ibm-862", "Cp862");
478 aliasTable.put("cp862", "Cp862");
479 aliasTable.put("862", "Cp862");
480 aliasTable.put("cspc862latinhebrew", "Cp862");
481
482 // MIBenum: 2050
483 aliasTable.put("ibm863", "Cp863");
484 aliasTable.put("ibm-863", "Cp863");
485 aliasTable.put("cp863", "Cp863");
486 aliasTable.put("863", "Cp863");
487 aliasTable.put("csibm863", "Cp863");
488
489 // MIBenum: 2051
490 aliasTable.put("ibm864", "Cp864");
491 aliasTable.put("ibm-864", "Cp864");
492 aliasTable.put("cp864", "Cp864");
493 aliasTable.put("csibm864", "Cp864");
494
495 // MIBenum: 2052
496 aliasTable.put("ibm865", "Cp865");
497 aliasTable.put("ibm-865", "Cp865");
498 aliasTable.put("cp865", "Cp865");
499 aliasTable.put("865", "Cp865");
500 aliasTable.put("csibm865", "Cp865");
501
502 // MIBenum: ????
503 aliasTable.put("ibm866", "Cp866");
504 aliasTable.put("ibm-866", "Cp866");
505 aliasTable.put("cp866", "Cp866");
506 aliasTable.put("866", "Cp866");
507 aliasTable.put("csibm866", "Cp866");
508
509 // MIBenum: ????
510 aliasTable.put("ibm868", "Cp868");
511 aliasTable.put("ibm-868", "Cp868");
512 aliasTable.put("cp868", "Cp868");
513 aliasTable.put("868", "Cp868");
514
515 // MIBenum: 2054
516 aliasTable.put("ibm869", "Cp869");
517 aliasTable.put("ibm-869", "Cp869");
518 aliasTable.put("cp869", "Cp869");
519 aliasTable.put("869", "Cp869");
520 aliasTable.put("cp-gr", "Cp869");
521 aliasTable.put("csibm869", "Cp869");
522
523 // MIBenum: ????
524 aliasTable.put("ibm870", "Cp870");
525 aliasTable.put("ibm-870", "Cp870");
526 aliasTable.put("cp870", "Cp870");
527 aliasTable.put("870", "Cp870");
528
529 // MIBenum: ????
530 aliasTable.put("ibm871", "Cp871");
531 aliasTable.put("ibm-871", "Cp871");
532 aliasTable.put("cp871", "Cp871");
533 aliasTable.put("871", "Cp871");
534
535 // MIBenum: ????
536 aliasTable.put("ibm874", "Cp874");
537 aliasTable.put("ibm-874", "Cp874");
538 aliasTable.put("cp874", "Cp874");
539 aliasTable.put("874", "Cp874");
540
541 // MIBenum: ????
542 aliasTable.put("ibm875", "Cp875");
543 aliasTable.put("ibm-875", "Cp875");
544 aliasTable.put("cp875", "Cp875");
545 aliasTable.put("875", "Cp875");
546
547 // MIBenum: ????
548 aliasTable.put("ibm918", "Cp918");
549 aliasTable.put("ibm-918", "Cp918");
550 aliasTable.put("cp918", "Cp918");
551 aliasTable.put("918", "Cp918");
552
553 // MIBenum: ????
554 aliasTable.put("ibm921", "Cp921");
555 aliasTable.put("ibm-921", "Cp921");
556 aliasTable.put("cp921", "Cp921");
557 aliasTable.put("921", "Cp921");
558
559 // MIBenum: ????
560 aliasTable.put("ibm922", "Cp922");
561 aliasTable.put("ibm-922", "Cp922");
562 aliasTable.put("cp922", "Cp922");
563 aliasTable.put("922", "Cp922");
564
565 // MIBenum: ????
566 aliasTable.put("ibm930", "Cp930"); /* MDA */
567 aliasTable.put("ibm-930", "Cp930"); /* MDA */
568 aliasTable.put("cp930", "Cp930"); /* MDA */
569 aliasTable.put("930", "Cp930"); /* MDA */
570
571 // MIBenum: ????
572 aliasTable.put("ibm933", "Cp933"); /* MDA */
573 aliasTable.put("ibm-933", "Cp933"); /* MDA */
574 aliasTable.put("cp933", "Cp933"); /* MDA */
575 aliasTable.put("933", "Cp933"); /* MDA */
576
577 // MIBenum: ????
578 aliasTable.put("ibm935", "Cp935"); /* MDA */
579 aliasTable.put("ibm-935", "Cp935"); /* MDA */
580 aliasTable.put("cp935", "Cp935"); /* MDA */
581 aliasTable.put("935", "Cp935"); /* MDA */
582
583 // MIBenum: ????
584 aliasTable.put("ibm937", "Cp937"); /* MDA */
585 aliasTable.put("ibm-937", "Cp937"); /* MDA */
586 aliasTable.put("cp937", "Cp937"); /* MDA */
587 aliasTable.put("937", "Cp937"); /* MDA */
588
589 // MIBenum: ????
590 aliasTable.put("ibm939", "Cp939"); /* MDA */
591 aliasTable.put("ibm-939", "Cp939"); /* MDA */
592 aliasTable.put("cp939", "Cp939"); /* MDA */
593 aliasTable.put("939", "Cp939"); /* MDA */
594
595 // MIBenum: ????
596 aliasTable.put("ibm942", "Cp942"); /* MDA */
597 aliasTable.put("ibm-942", "Cp942"); /* MDA */
598 aliasTable.put("cp942", "Cp942"); /* MDA */
599 aliasTable.put("942", "Cp942"); /* MDA */
600
601 // MIBenum: ????
602 aliasTable.put("ibm943", "Cp943"); /* ibm.3158 */
603 aliasTable.put("ibm-943", "Cp943"); /* ibm.3158 */
604 aliasTable.put("cp943", "Cp943"); /* ibm.3158 */
605 aliasTable.put("943", "Cp943"); /* ibm.3158 */
606
607 // MIBenum: ????
608 aliasTable.put("ibm948", "Cp948"); /* MDA */
609 aliasTable.put("ibm-948", "Cp948"); /* MDA */
610 aliasTable.put("cp948", "Cp948"); /* MDA */
611 aliasTable.put("948", "Cp948"); /* MDA */
612
613 // MIBenum: ????
614 aliasTable.put("ibm949", "Cp949"); /* MDA */
615 aliasTable.put("ibm-949", "Cp949"); /* MDA */
616 aliasTable.put("cp949", "Cp949"); /* MDA */
617 aliasTable.put("949", "Cp949"); /* MDA */
618
619 // MIBenum: ????
620 aliasTable.put("ibm950", "Cp950"); /* MDA */
621 aliasTable.put("ibm-950", "Cp950"); /* MDA */
622 aliasTable.put("cp950", "Cp950"); /* MDA */
623 aliasTable.put("950", "Cp950"); /* MDA */
624
625 // MIBenum: ????
626 aliasTable.put("ibm964", "Cp964"); /* MDA */
627 aliasTable.put("ibm-964", "Cp964"); /* MDA */
628 aliasTable.put("cp964", "Cp964"); /* MDA */
629 aliasTable.put("964", "Cp964"); /* MDA */
630
631 // MIBenum: ????
632 aliasTable.put("ibm970", "Cp970"); /* MDA */
633 aliasTable.put("ibm-970", "Cp970"); /* MDA */
634 aliasTable.put("cp970", "Cp970"); /* MDA */
635 aliasTable.put("970", "Cp970"); /* MDA */
636
637 // MIBenum: ????
638 aliasTable.put("ibm1006", "Cp1006");
639 aliasTable.put("ibm-1006", "Cp1006");
640 aliasTable.put("cp1006", "Cp1006");
641 aliasTable.put("1006", "Cp1006");
642
643 // MIBenum: ????
644 aliasTable.put("ibm1025", "Cp1025");
645 aliasTable.put("ibm-1025", "Cp1025");
646 aliasTable.put("cp1025", "Cp1025");
647 aliasTable.put("1025", "Cp1025");
648
649 // MIBenum: ????
650 aliasTable.put("ibm1026", "Cp1026");
651 aliasTable.put("ibm-1026", "Cp1026");
652 aliasTable.put("cp1026", "Cp1026");
653 aliasTable.put("1026", "Cp1026");
654
655 // MIBenum: ????
656 aliasTable.put("ibm1097", "Cp1097");
657 aliasTable.put("ibm-1097", "Cp1097");
658 aliasTable.put("cp1097", "Cp1097");
659 aliasTable.put("1097", "Cp1097");
660
661 // MIBenum: ????
662 aliasTable.put("ibm1098", "Cp1098");
663 aliasTable.put("ibm-1098", "Cp1098");
664 aliasTable.put("cp1098", "Cp1098");
665 aliasTable.put("1098", "Cp1098");
666
667 // MIBenum: ????
668 aliasTable.put("ibm1112", "Cp1112");
669 aliasTable.put("ibm-1112", "Cp1112");
670 aliasTable.put("cp1112", "Cp1112");
671 aliasTable.put("1112", "Cp1112");
672
673 // MIBenum: ????
674 aliasTable.put("ibm1122", "Cp1122");
675 aliasTable.put("ibm-1122", "Cp1122");
676 aliasTable.put("cp1122", "Cp1122");
677 aliasTable.put("1122", "Cp1122");
678
679 // MIBenum: ????
680 aliasTable.put("ibm1123", "Cp1123");
681 aliasTable.put("ibm-1123", "Cp1123");
682 aliasTable.put("cp1123", "Cp1123");
683 aliasTable.put("1123", "Cp1123");
684
685 // MIBenum: ????
686 aliasTable.put("ibm1124", "Cp1124");
687 aliasTable.put("ibm-1124", "Cp1124");
688 aliasTable.put("cp1124", "Cp1124");
689 aliasTable.put("1124", "Cp1124");
690
691 // MIBenum: ????
692 aliasTable.put("ibm1381", "Cp1381"); /* MDA */
693 aliasTable.put("ibm-1381", "Cp1381"); /* MDA */
694 aliasTable.put("cp1381", "Cp1381"); /* MDA */
695 aliasTable.put("1381", "Cp1381"); /* MDA */
696
697 // MIBenum: ????
698 aliasTable.put("ibm1383", "Cp1383"); /* MDA */
699 aliasTable.put("ibm-1383", "Cp1383"); /* MDA */
700 aliasTable.put("cp1383", "Cp1383"); /* MDA */
701 aliasTable.put("1383", "Cp1383"); /* MDA */
702
703 // Specialized auto-detection for Japanese charsets
704 aliasTable.put("jis auto detect", "JISAutoDetect");
705
706 // MIBenum: 16/39
707 aliasTable.put("jis", "ISO2022JP");
708 aliasTable.put("iso-2022-jp", "ISO2022JP");
709 aliasTable.put("csiso2022jp", "ISO2022JP");
710 aliasTable.put("jis_encoding", "ISO2022JP");
711 aliasTable.put("csjisencoding", "ISO2022JP");
712
713 // MIBenum: 17/2024
714 aliasTable.put("windows-31j", "MS932");
715 aliasTable.put("cswindows31j", "MS932");
716
717 // JIS-defined Shift JIS
718 aliasTable.put("\u30b7\u30d5\u30c8\u7b26\u53f7\u5316\u8868\u73fe",
719 "SJIS"); // JIS name
720 aliasTable.put("pck", "PCK"); // Case independent PCK alias
721
722 if (sjisIsMS932) {
723 aliasTable.put("shift_jis", "MS932"); // IANA shift jis aliases
724 aliasTable.put("csshiftjis", "MS932"); // updated per 4556882
725 aliasTable.put("x-sjis", "MS932");
726 aliasTable.put("ms_kanji", "MS932");
727 } else {
728 aliasTable.put("shift_jis", "SJIS"); // IANA shift jis aliases
729 aliasTable.put("csshiftjis", "SJIS");
730 aliasTable.put("x-sjis", "SJIS");
731 aliasTable.put("ms_kanji", "SJIS");
732 }
733
734 // MIBenum: 18
735 // Japanese EUC
736 aliasTable.put("eucjis", "EUC_JP");
737 aliasTable.put("euc-jp", "EUC_JP");
738 aliasTable.put("eucjp", "EUC_JP");
739 aliasTable.put("extended_unix_code_packed_format_for_japanese",
740 "EUC_JP");
741 aliasTable.put("cseucpkdfmtjapanese", "EUC_JP");
742 aliasTable.put("x-euc-jp", "EUC_JP");
743 aliasTable.put("x-eucjp", "EUC_JP");
744 aliasTable.put("eucjp-open", "EUC_JP_Solaris"); // 1.3.1_x compatibility
745
746 // For handing only JIS0202 and JIS0208 in linux
747 aliasTable.put("euc-jp-linux", "EUC_JP_LINUX");
748
749 // MIBenum: 874
750 aliasTable.put("windows-874", "MS874");
751
752 // MIBenum: 2250
753 aliasTable.put("windows-1250", "Cp1250");
754
755 // MIBenum: 2251
756 aliasTable.put("windows-1251", "Cp1251");
757 aliasTable.put("ansi-1251", "Cp1251"); // Solaris ru_RU.ANSI1251 locale
758
759 // MIBenum: 2252
760 aliasTable.put("windows-1252", "Cp1252");
761
762 // MIBenum: 2253
763 aliasTable.put("windows-1253", "Cp1253");
764
765 // MIBenum: 2254
766 aliasTable.put("windows-1254", "Cp1254");
767
768 // MIBenum: 2255
769 aliasTable.put("windows-1255", "Cp1255");
770
771 // MIBenum: 2256
772 aliasTable.put("windows-1256", "Cp1256");
773
774 // MIBenum: 2257
775 aliasTable.put("windows-1257", "Cp1257");
776
777 // MIBenum: 2258
778 aliasTable.put("windows-1258", "Cp1258");
779
780 // MIBenum: ????
781 aliasTable.put("ibm33722", "Cp33722"); /* MDA */
782 aliasTable.put("ibm-33722", "Cp33722"); /* MDA */
783 aliasTable.put("cp33722", "Cp33722"); /* MDA */
784 aliasTable.put("33722", "Cp33722"); /* MDA */
785
786 // Russian KOI8-R
787 aliasTable.put("koi8-r", "KOI8_R");
788 aliasTable.put("koi8", "KOI8_R");
789 aliasTable.put("cskoi8r", "KOI8_R");
790
791 // Simplified Chinese
792 aliasTable.put("gb2312", "EUC_CN");
793 aliasTable.put("gb2312-80", "EUC_CN");
794 aliasTable.put("gb2312-1980", "EUC_CN");
795 aliasTable.put("euc-cn", "EUC_CN");
796 aliasTable.put("euccn", "EUC_CN");
797
798 aliasTable.put("big5", "Big5");
799 aliasTable.put("big5hk", "Big5_HKSCS");
800 aliasTable.put("big5-hkscs", "Big5_HKSCS");
801 // Added for future compatibility, explicit mapping to Unicode 3.0
802 aliasTable.put("big5-hkscs:unicode3.0", "Big5_HKSCS");
803 aliasTable.put("big5_solaris", "Big5_Solaris");
804
805 // Traditional Chinese
806 aliasTable.put("cns11643", "EUC_TW");
807 aliasTable.put("euc-tw", "EUC_TW");
808 aliasTable.put("euctw", "EUC_TW");
809
810 // Korean
811 aliasTable.put("ksc5601", "EUC_KR");
812 aliasTable.put("euc-kr", "EUC_KR");
813 aliasTable.put("euckr", "EUC_KR");
814 aliasTable.put("ks_c_5601-1987", "EUC_KR");
815 aliasTable.put("ksc5601-1987", "EUC_KR");
816 aliasTable.put("ksc5601_1987", "EUC_KR");
817 aliasTable.put("ksc_5601", "EUC_KR");
818 aliasTable.put("5601", "EUC_KR");
819
820 aliasTable.put("ksc5601-1992", "Johab");
821 aliasTable.put("ksc5601_1992", "Johab");
822 aliasTable.put("ms1361", "Johab");
823
824 aliasTable.put("windows-949", "MS949");
825
826 //MIBenum: 37
827 aliasTable.put("iso-2022-kr", "ISO2022KR");
828 aliasTable.put("csiso2022kr", "ISO2022KR");
829
830 // Thai
831 aliasTable.put("tis620.2533", "TIS620");
832 aliasTable.put("tis-620", "TIS620"); // Linux name
833
834 // X11 Compound Text
835 aliasTable.put("x-compound-text", "COMPOUND_TEXT");
836 aliasTable.put("x11-compound_text", "COMPOUND_TEXT");
837
838 // Variants
839 aliasTable.put("cp942c", "Cp942C");
840 aliasTable.put("cp943c", "Cp943C");
841 aliasTable.put("cp949c", "Cp949C");
842 aliasTable.put("iscii", "ISCII91");
843
844 installedAll = true;
845 }
846 }
847
848 /**
849 * For Solaris:
850 * always returns "PCK"
851 *
852 * For other platforms:
853 * method returns "MS932" if the file.encoding property value is "MS932"
854 * or an alias of "MS932"
855 * otherwise, "SJIS", regardless of its
856 * actual file.encoding value. This method is called from the JIS
857 * Auto Detect converter.
858 */
859 static String getSJISName() {
860 String encodeName = (String) AccessController.doPrivileged(
861 new PrivilegedAction() {
862 public Object run() {
863 String osName = System.getProperty("os.name");
864 if (osName.equals("Solaris") || osName.equals("SunOS")){
865 return "PCK";
866 }
867 else {
868 return System.getProperty("file.encoding", null);
869 }
870 }
871 });
872
873 if (encodeName != null) {
874 if (encodeName.equals("MS932"))
875 return encodeName;
876 encodeName = aliasName(encodeName);
877 }
878 return (encodeName != null && encodeName.equals("MS932")) ? encodeName : "SJIS";
879 }
880
881
882 static String getEUCJPName() {
883 String encodeName = (String) AccessController.doPrivileged(
884 new PrivilegedAction() {
885 public Object run() {
886 String osName = System.getProperty("os.name");
887 if (osName.equals("Solaris") || osName.equals("SunOS"))
888 return "eucJP-open";
889 else
890 return "EUC_JP";
891 }
892 });
893 return encodeName;
894 }
895}