jdk/src/share/classes/sun/io/CharacterEncoding.java
changeset 10372 2f6d68f22eae
parent 10321 64f7ee2f31dd
parent 10371 7da2112e4236
child 10373 d4c5e59b82f8
equal deleted inserted replaced
10321:64f7ee2f31dd 10372:2f6d68f22eae
     1 /*
       
     2  * Copyright (c) 1996, 2010, 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.  Oracle designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22  * or visit www.oracle.com if you need additional information or have any
       
    23  * questions.
       
    24  */
       
    25 
       
    26 package sun.io;
       
    27 
       
    28 import java.util.Collections;
       
    29 import java.util.Iterator;
       
    30 import java.util.HashMap;
       
    31 import java.util.Locale;
       
    32 import java.util.Map;
       
    33 import java.security.AccessController;
       
    34 import java.security.PrivilegedAction;
       
    35 import 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
       
    49 public class CharacterEncoding {
       
    50 
       
    51     private static boolean sjisIsMS932;
       
    52 
       
    53     private static Map<String,String> 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 = aliasTable.get(lower);
       
   123 
       
   124         if (val == null && !installedAll) {
       
   125             installAll();
       
   126             val = 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 = 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("ibm833",                "Cp833");
       
   410             aliasTable.put("ibm-833",               "Cp833");
       
   411             aliasTable.put("cp833",                 "Cp833");
       
   412             aliasTable.put("833",                   "Cp833");
       
   413 
       
   414             aliasTable.put("ibm834",                "Cp834");
       
   415             aliasTable.put("ibm-834",               "Cp834");
       
   416             aliasTable.put("cp834",                 "Cp834");
       
   417             aliasTable.put("834",                   "Cp834");
       
   418 
       
   419             // MIBenum: ????
       
   420             aliasTable.put("ibm838",                "Cp838");         /* MDA */
       
   421             aliasTable.put("ibm-838",               "Cp838");         /* MDA */
       
   422             aliasTable.put("cp838",                 "Cp838");         /* MDA */
       
   423             aliasTable.put("838",                   "Cp838");         /* MDA */
       
   424 
       
   425             // "Cp850"
       
   426             // MIBenum: 2009
       
   427             aliasTable.put("ibm850",                "Cp850");
       
   428             aliasTable.put("ibm-850",               "Cp850");
       
   429             aliasTable.put("cp850",                 "Cp850");
       
   430             aliasTable.put("850",                   "Cp850");
       
   431             aliasTable.put("cspc850multilingual",   "Cp850");
       
   432 
       
   433             // "Cp852"
       
   434             // MIBenum: 2010
       
   435             aliasTable.put("ibm852",                "Cp852");
       
   436             aliasTable.put("ibm-852",               "Cp852");
       
   437             aliasTable.put("cp852",                 "Cp852");
       
   438             aliasTable.put("852",                   "Cp852");
       
   439             aliasTable.put("cspcp852",              "Cp852");
       
   440 
       
   441             // "Cp855"
       
   442             // MIBenum: 2046
       
   443             aliasTable.put("ibm855",                "Cp855");
       
   444             aliasTable.put("ibm-855",               "Cp855");
       
   445             aliasTable.put("cp855",                 "Cp855");
       
   446             aliasTable.put("855",                   "Cp855");
       
   447             aliasTable.put("cspcp855",              "Cp855");
       
   448 
       
   449             // "Cp855"
       
   450             // MIBenum: ???
       
   451             aliasTable.put("ibm856",                "Cp856");
       
   452             aliasTable.put("ibm-856",               "Cp856");
       
   453             aliasTable.put("cp856",                 "Cp856");
       
   454             aliasTable.put("856",                   "Cp856");
       
   455 
       
   456             // "Cp857"
       
   457             // MIBenum: 2047
       
   458             aliasTable.put("ibm857",                "Cp857");
       
   459             aliasTable.put("ibm-857",               "Cp857");
       
   460             aliasTable.put("cp857",                 "Cp857");
       
   461             aliasTable.put("857",                   "Cp857");
       
   462             aliasTable.put("csibm857",              "Cp857");
       
   463 
       
   464             // "Cp860"
       
   465             // MIBenum: 2048
       
   466             aliasTable.put("ibm860",                "Cp860");
       
   467             aliasTable.put("ibm-860",               "Cp860");
       
   468             aliasTable.put("cp860",                 "Cp860");
       
   469             aliasTable.put("860",                   "Cp860");
       
   470             aliasTable.put("csibm860",              "Cp860");
       
   471 
       
   472             // MIBenum: 2049
       
   473             aliasTable.put("ibm861",                "Cp861");
       
   474             aliasTable.put("ibm-861",               "Cp861");
       
   475             aliasTable.put("cp861",                 "Cp861");
       
   476             aliasTable.put("cp-is",                 "Cp861");
       
   477             aliasTable.put("861",                   "Cp861");
       
   478             aliasTable.put("csibm861",              "Cp861");
       
   479 
       
   480             // MIBenum: 2013
       
   481             aliasTable.put("ibm862",                "Cp862");
       
   482             aliasTable.put("ibm-862",               "Cp862");
       
   483             aliasTable.put("cp862",                 "Cp862");
       
   484             aliasTable.put("862",                   "Cp862");
       
   485             aliasTable.put("cspc862latinhebrew",    "Cp862");
       
   486 
       
   487             // MIBenum: 2050
       
   488             aliasTable.put("ibm863",                "Cp863");
       
   489             aliasTable.put("ibm-863",               "Cp863");
       
   490             aliasTable.put("cp863",                 "Cp863");
       
   491             aliasTable.put("863",                   "Cp863");
       
   492             aliasTable.put("csibm863",              "Cp863");
       
   493 
       
   494             // MIBenum: 2051
       
   495             aliasTable.put("ibm864",                "Cp864");
       
   496             aliasTable.put("ibm-864",               "Cp864");
       
   497             aliasTable.put("cp864",                 "Cp864");
       
   498             aliasTable.put("csibm864",              "Cp864");
       
   499 
       
   500             // MIBenum: 2052
       
   501             aliasTable.put("ibm865",                "Cp865");
       
   502             aliasTable.put("ibm-865",               "Cp865");
       
   503             aliasTable.put("cp865",                 "Cp865");
       
   504             aliasTable.put("865",                   "Cp865");
       
   505             aliasTable.put("csibm865",              "Cp865");
       
   506 
       
   507             // MIBenum: ????
       
   508             aliasTable.put("ibm866",                "Cp866");
       
   509             aliasTable.put("ibm-866",               "Cp866");
       
   510             aliasTable.put("cp866",                 "Cp866");
       
   511             aliasTable.put("866",                   "Cp866");
       
   512             aliasTable.put("csibm866",              "Cp866");
       
   513 
       
   514             // MIBenum: ????
       
   515             aliasTable.put("ibm868",                "Cp868");
       
   516             aliasTable.put("ibm-868",               "Cp868");
       
   517             aliasTable.put("cp868",                 "Cp868");
       
   518             aliasTable.put("868",                   "Cp868");
       
   519 
       
   520             // MIBenum: 2054
       
   521             aliasTable.put("ibm869",                "Cp869");
       
   522             aliasTable.put("ibm-869",               "Cp869");
       
   523             aliasTable.put("cp869",                 "Cp869");
       
   524             aliasTable.put("869",                   "Cp869");
       
   525             aliasTable.put("cp-gr",                 "Cp869");
       
   526             aliasTable.put("csibm869",              "Cp869");
       
   527 
       
   528             // MIBenum: ????
       
   529             aliasTable.put("ibm870",                "Cp870");
       
   530             aliasTable.put("ibm-870",               "Cp870");
       
   531             aliasTable.put("cp870",                 "Cp870");
       
   532             aliasTable.put("870",                   "Cp870");
       
   533 
       
   534             // MIBenum: ????
       
   535             aliasTable.put("ibm871",                "Cp871");
       
   536             aliasTable.put("ibm-871",               "Cp871");
       
   537             aliasTable.put("cp871",                 "Cp871");
       
   538             aliasTable.put("871",                   "Cp871");
       
   539 
       
   540             // MIBenum: ????
       
   541             aliasTable.put("ibm874",                "Cp874");
       
   542             aliasTable.put("ibm-874",               "Cp874");
       
   543             aliasTable.put("cp874",                 "Cp874");
       
   544             aliasTable.put("874",                   "Cp874");
       
   545 
       
   546             // MIBenum: ????
       
   547             aliasTable.put("ibm875",                "Cp875");
       
   548             aliasTable.put("ibm-875",               "Cp875");
       
   549             aliasTable.put("cp875",                 "Cp875");
       
   550             aliasTable.put("875",                   "Cp875");
       
   551 
       
   552             // MIBenum: ????
       
   553             aliasTable.put("ibm918",                "Cp918");
       
   554             aliasTable.put("ibm-918",               "Cp918");
       
   555             aliasTable.put("cp918",                 "Cp918");
       
   556             aliasTable.put("918",                   "Cp918");
       
   557 
       
   558             // MIBenum: ????
       
   559             aliasTable.put("ibm921",                "Cp921");
       
   560             aliasTable.put("ibm-921",               "Cp921");
       
   561             aliasTable.put("cp921",                 "Cp921");
       
   562             aliasTable.put("921",                   "Cp921");
       
   563 
       
   564             // MIBenum: ????
       
   565             aliasTable.put("ibm922",                "Cp922");
       
   566             aliasTable.put("ibm-922",               "Cp922");
       
   567             aliasTable.put("cp922",                 "Cp922");
       
   568             aliasTable.put("922",                   "Cp922");
       
   569 
       
   570             // MIBenum: ????
       
   571             aliasTable.put("ibm930",                "Cp930");         /* MDA */
       
   572             aliasTable.put("ibm-930",               "Cp930");         /* MDA */
       
   573             aliasTable.put("cp930",                 "Cp930");         /* MDA */
       
   574             aliasTable.put("930",                   "Cp930");         /* MDA */
       
   575 
       
   576             // MIBenum: ????
       
   577             aliasTable.put("ibm933",                "Cp933");         /* MDA */
       
   578             aliasTable.put("ibm-933",               "Cp933");         /* MDA */
       
   579             aliasTable.put("cp933",                 "Cp933");         /* MDA */
       
   580             aliasTable.put("933",                   "Cp933");         /* MDA */
       
   581 
       
   582             // MIBenum: ????
       
   583             aliasTable.put("ibm935",                "Cp935");         /* MDA */
       
   584             aliasTable.put("ibm-935",               "Cp935");         /* MDA */
       
   585             aliasTable.put("cp935",                 "Cp935");         /* MDA */
       
   586             aliasTable.put("935",                   "Cp935");         /* MDA */
       
   587 
       
   588             // MIBenum: ????
       
   589             aliasTable.put("ibm937",                "Cp937");         /* MDA */
       
   590             aliasTable.put("ibm-937",               "Cp937");         /* MDA */
       
   591             aliasTable.put("cp937",                 "Cp937");         /* MDA */
       
   592             aliasTable.put("937",                   "Cp937");         /* MDA */
       
   593 
       
   594             // MIBenum: ????
       
   595             aliasTable.put("ibm939",                "Cp939");         /* MDA */
       
   596             aliasTable.put("ibm-939",               "Cp939");         /* MDA */
       
   597             aliasTable.put("cp939",                 "Cp939");         /* MDA */
       
   598             aliasTable.put("939",                   "Cp939");         /* MDA */
       
   599 
       
   600             // MIBenum: ????
       
   601             aliasTable.put("ibm942",                "Cp942");         /* MDA */
       
   602             aliasTable.put("ibm-942",               "Cp942");         /* MDA */
       
   603             aliasTable.put("cp942",                 "Cp942");         /* MDA */
       
   604             aliasTable.put("942",                   "Cp942");         /* MDA */
       
   605 
       
   606             // MIBenum: ????
       
   607             aliasTable.put("ibm943",                "Cp943");         /* ibm.3158 */
       
   608             aliasTable.put("ibm-943",               "Cp943");         /* ibm.3158 */
       
   609             aliasTable.put("cp943",                 "Cp943");         /* ibm.3158 */
       
   610             aliasTable.put("943",                   "Cp943");         /* ibm.3158 */
       
   611 
       
   612             // MIBenum: ????
       
   613             aliasTable.put("ibm948",                "Cp948");         /* MDA */
       
   614             aliasTable.put("ibm-948",               "Cp948");         /* MDA */
       
   615             aliasTable.put("cp948",                 "Cp948");         /* MDA */
       
   616             aliasTable.put("948",                   "Cp948");         /* MDA */
       
   617 
       
   618             // MIBenum: ????
       
   619             aliasTable.put("ibm949",                "Cp949");         /* MDA */
       
   620             aliasTable.put("ibm-949",               "Cp949");         /* MDA */
       
   621             aliasTable.put("cp949",                 "Cp949");         /* MDA */
       
   622             aliasTable.put("949",                   "Cp949");         /* MDA */
       
   623 
       
   624             // MIBenum: ????
       
   625             aliasTable.put("ibm950",                "Cp950");         /* MDA */
       
   626             aliasTable.put("ibm-950",               "Cp950");         /* MDA */
       
   627             aliasTable.put("cp950",                 "Cp950");         /* MDA */
       
   628             aliasTable.put("950",                   "Cp950");         /* MDA */
       
   629 
       
   630             // MIBenum: ????
       
   631             aliasTable.put("ibm964",                "Cp964");         /* MDA */
       
   632             aliasTable.put("ibm-964",               "Cp964");         /* MDA */
       
   633             aliasTable.put("cp964",                 "Cp964");         /* MDA */
       
   634             aliasTable.put("964",                   "Cp964");         /* MDA */
       
   635 
       
   636             // MIBenum: ????
       
   637             aliasTable.put("ibm970",                "Cp970");         /* MDA */
       
   638             aliasTable.put("ibm-970",               "Cp970");         /* MDA */
       
   639             aliasTable.put("cp970",                 "Cp970");         /* MDA */
       
   640             aliasTable.put("970",                   "Cp970");         /* MDA */
       
   641 
       
   642             // MIBenum: ????
       
   643             aliasTable.put("ibm1006",               "Cp1006");
       
   644             aliasTable.put("ibm-1006",              "Cp1006");
       
   645             aliasTable.put("cp1006",                "Cp1006");
       
   646             aliasTable.put("1006",                  "Cp1006");
       
   647 
       
   648             // MIBenum: ????
       
   649             aliasTable.put("ibm1025",               "Cp1025");
       
   650             aliasTable.put("ibm-1025",              "Cp1025");
       
   651             aliasTable.put("cp1025",                "Cp1025");
       
   652             aliasTable.put("1025",                  "Cp1025");
       
   653 
       
   654             // MIBenum: ????
       
   655             aliasTable.put("ibm1026",               "Cp1026");
       
   656             aliasTable.put("ibm-1026",              "Cp1026");
       
   657             aliasTable.put("cp1026",                "Cp1026");
       
   658             aliasTable.put("1026",                  "Cp1026");
       
   659 
       
   660             // MIBenum: ????
       
   661             aliasTable.put("ibm1097",               "Cp1097");
       
   662             aliasTable.put("ibm-1097",              "Cp1097");
       
   663             aliasTable.put("cp1097",                "Cp1097");
       
   664             aliasTable.put("1097",                  "Cp1097");
       
   665 
       
   666             // MIBenum: ????
       
   667             aliasTable.put("ibm1098",               "Cp1098");
       
   668             aliasTable.put("ibm-1098",              "Cp1098");
       
   669             aliasTable.put("cp1098",                "Cp1098");
       
   670             aliasTable.put("1098",                  "Cp1098");
       
   671 
       
   672             // MIBenum: ????
       
   673             aliasTable.put("ibm1112",               "Cp1112");
       
   674             aliasTable.put("ibm-1112",              "Cp1112");
       
   675             aliasTable.put("cp1112",                "Cp1112");
       
   676             aliasTable.put("1112",                  "Cp1112");
       
   677 
       
   678             // MIBenum: ????
       
   679             aliasTable.put("ibm1122",               "Cp1122");
       
   680             aliasTable.put("ibm-1122",              "Cp1122");
       
   681             aliasTable.put("cp1122",                "Cp1122");
       
   682             aliasTable.put("1122",                  "Cp1122");
       
   683 
       
   684             // MIBenum: ????
       
   685             aliasTable.put("ibm1123",               "Cp1123");
       
   686             aliasTable.put("ibm-1123",              "Cp1123");
       
   687             aliasTable.put("cp1123",                "Cp1123");
       
   688             aliasTable.put("1123",                  "Cp1123");
       
   689 
       
   690             // MIBenum: ????
       
   691             aliasTable.put("ibm1124",               "Cp1124");
       
   692             aliasTable.put("ibm-1124",              "Cp1124");
       
   693             aliasTable.put("cp1124",                "Cp1124");
       
   694             aliasTable.put("1124",                  "Cp1124");
       
   695 
       
   696             // MIBenum: ????
       
   697             aliasTable.put("ibm1381",               "Cp1381");        /* MDA */
       
   698             aliasTable.put("ibm-1381",              "Cp1381");        /* MDA */
       
   699             aliasTable.put("cp1381",                "Cp1381");        /* MDA */
       
   700             aliasTable.put("1381",                  "Cp1381");        /* MDA */
       
   701 
       
   702             // MIBenum: ????
       
   703             aliasTable.put("ibm1383",               "Cp1383");        /* MDA */
       
   704             aliasTable.put("ibm-1383",              "Cp1383");        /* MDA */
       
   705             aliasTable.put("cp1383",                "Cp1383");        /* MDA */
       
   706             aliasTable.put("1383",                  "Cp1383");        /* MDA */
       
   707 
       
   708             // Specialized auto-detection for Japanese charsets
       
   709             aliasTable.put("jis auto detect",       "JISAutoDetect");
       
   710 
       
   711             // MIBenum: 16/39
       
   712             aliasTable.put("jis",                   "ISO2022JP");
       
   713             aliasTable.put("iso-2022-jp",           "ISO2022JP");
       
   714             aliasTable.put("csiso2022jp",           "ISO2022JP");
       
   715             aliasTable.put("jis_encoding",          "ISO2022JP");
       
   716             aliasTable.put("csjisencoding",         "ISO2022JP");
       
   717 
       
   718             // MIBenum: 17/2024
       
   719             aliasTable.put("windows-31j",           "MS932");
       
   720             aliasTable.put("cswindows31j",          "MS932");
       
   721 
       
   722             // JIS-defined Shift JIS
       
   723             aliasTable.put("\u30b7\u30d5\u30c8\u7b26\u53f7\u5316\u8868\u73fe",
       
   724                            "SJIS");                             // JIS name
       
   725             aliasTable.put("pck", "PCK");           // Case independent PCK alias
       
   726 
       
   727             if (sjisIsMS932) {
       
   728                 aliasTable.put("shift_jis",         "MS932");   // IANA shift jis aliases
       
   729                 aliasTable.put("csshiftjis",        "MS932");   // updated per 4556882
       
   730                 aliasTable.put("x-sjis",            "MS932");
       
   731                 aliasTable.put("ms_kanji",          "MS932");
       
   732             } else {
       
   733                 aliasTable.put("shift_jis",         "SJIS");    // IANA shift jis aliases
       
   734                 aliasTable.put("csshiftjis",        "SJIS");
       
   735                 aliasTable.put("x-sjis",            "SJIS");
       
   736                 aliasTable.put("ms_kanji",          "SJIS");
       
   737             }
       
   738 
       
   739             // MIBenum: 18
       
   740             // Japanese EUC
       
   741             aliasTable.put("eucjis",                "EUC_JP");
       
   742             aliasTable.put("euc-jp",                "EUC_JP");
       
   743             aliasTable.put("eucjp",                 "EUC_JP");
       
   744             aliasTable.put("extended_unix_code_packed_format_for_japanese",
       
   745                            "EUC_JP");
       
   746             aliasTable.put("cseucpkdfmtjapanese",   "EUC_JP");
       
   747             aliasTable.put("x-euc-jp",              "EUC_JP");
       
   748             aliasTable.put("x-eucjp",               "EUC_JP");
       
   749             aliasTable.put("eucjp-open",            "EUC_JP_Solaris"); // 1.3.1_x compatibility
       
   750 
       
   751             // For handing only JIS0202 and JIS0208 in linux
       
   752             aliasTable.put("euc-jp-linux",          "EUC_JP_LINUX");
       
   753 
       
   754             // MIBenum: 874
       
   755             aliasTable.put("windows-874",           "MS874");
       
   756 
       
   757             // MIBenum: 2250
       
   758             aliasTable.put("windows-1250",          "Cp1250");
       
   759 
       
   760             // MIBenum: 2251
       
   761             aliasTable.put("windows-1251",          "Cp1251");
       
   762             aliasTable.put("ansi-1251",             "Cp1251"); // Solaris ru_RU.ANSI1251 locale
       
   763 
       
   764             // MIBenum: 2252
       
   765             aliasTable.put("windows-1252",          "Cp1252");
       
   766 
       
   767             // MIBenum: 2253
       
   768             aliasTable.put("windows-1253",          "Cp1253");
       
   769 
       
   770             // MIBenum: 2254
       
   771             aliasTable.put("windows-1254",          "Cp1254");
       
   772 
       
   773             // MIBenum: 2255
       
   774             aliasTable.put("windows-1255",          "Cp1255");
       
   775 
       
   776             // MIBenum: 2256
       
   777             aliasTable.put("windows-1256",          "Cp1256");
       
   778 
       
   779             // MIBenum: 2257
       
   780             aliasTable.put("windows-1257",          "Cp1257");
       
   781 
       
   782             // MIBenum: 2258
       
   783             aliasTable.put("windows-1258",          "Cp1258");
       
   784 
       
   785             // MIBenum: ????
       
   786             aliasTable.put("ibm33722",              "Cp33722");       /* MDA */
       
   787             aliasTable.put("ibm-33722",             "Cp33722");       /* MDA */
       
   788             aliasTable.put("cp33722",               "Cp33722");       /* MDA */
       
   789             aliasTable.put("33722",                 "Cp33722");       /* MDA */
       
   790 
       
   791             // Russian KOI8-R
       
   792             aliasTable.put("koi8-r",                "KOI8_R");
       
   793             aliasTable.put("koi8",                  "KOI8_R");
       
   794             aliasTable.put("cskoi8r",               "KOI8_R");
       
   795 
       
   796             // Simplified Chinese
       
   797             aliasTable.put("gb2312",                "EUC_CN");
       
   798             aliasTable.put("gb2312-80",             "EUC_CN");
       
   799             aliasTable.put("gb2312-1980",           "EUC_CN");
       
   800             aliasTable.put("euc-cn",                "EUC_CN");
       
   801             aliasTable.put("euccn",                 "EUC_CN");
       
   802 
       
   803             aliasTable.put("big5",                  "Big5");
       
   804             aliasTable.put("big5hk",                "Big5_HKSCS");
       
   805             aliasTable.put("big5-hkscs",            "Big5_HKSCS");
       
   806             // Added for future compatibility, explicit mapping to Unicode 3.0
       
   807             aliasTable.put("big5-hkscs:unicode3.0", "Big5_HKSCS");
       
   808             aliasTable.put("big5_solaris",          "Big5_Solaris");
       
   809 
       
   810             // Traditional Chinese
       
   811             aliasTable.put("cns11643",              "EUC_TW");
       
   812             aliasTable.put("euc-tw",                "EUC_TW");
       
   813             aliasTable.put("euctw",                 "EUC_TW");
       
   814 
       
   815             // Korean
       
   816             aliasTable.put("ksc5601",               "EUC_KR");
       
   817             aliasTable.put("euc-kr",                "EUC_KR");
       
   818             aliasTable.put("euckr",                 "EUC_KR");
       
   819             aliasTable.put("ks_c_5601-1987",        "EUC_KR");
       
   820             aliasTable.put("ksc5601-1987",          "EUC_KR");
       
   821             aliasTable.put("ksc5601_1987",          "EUC_KR");
       
   822             aliasTable.put("ksc_5601",              "EUC_KR");
       
   823             aliasTable.put("5601",                  "EUC_KR");
       
   824 
       
   825             aliasTable.put("ksc5601-1992",          "Johab");
       
   826             aliasTable.put("ksc5601_1992",          "Johab");
       
   827             aliasTable.put("ms1361",                "Johab");
       
   828 
       
   829             aliasTable.put("windows-949",           "MS949");
       
   830 
       
   831             //MIBenum: 37
       
   832             aliasTable.put("iso-2022-kr",           "ISO2022KR");
       
   833             aliasTable.put("csiso2022kr",           "ISO2022KR");
       
   834 
       
   835             // Thai
       
   836             aliasTable.put("tis620.2533",           "TIS620");
       
   837             aliasTable.put("tis-620",               "TIS620"); // Linux name
       
   838 
       
   839             // X11 Compound Text
       
   840             aliasTable.put("x-compound-text",       "COMPOUND_TEXT");
       
   841             aliasTable.put("x11-compound_text",     "COMPOUND_TEXT");
       
   842 
       
   843             // Variants
       
   844             aliasTable.put("cp942c", "Cp942C");
       
   845             aliasTable.put("cp943c", "Cp943C");
       
   846             aliasTable.put("cp949c", "Cp949C");
       
   847             aliasTable.put("iscii", "ISCII91");
       
   848 
       
   849             installedAll = true;
       
   850         }
       
   851     }
       
   852 
       
   853     /**
       
   854      * For Solaris:
       
   855      * always returns "PCK"
       
   856      *
       
   857      * For other platforms:
       
   858      * method returns "MS932" if the file.encoding property value is "MS932"
       
   859      * or an alias of "MS932"
       
   860      * otherwise, "SJIS", regardless of its
       
   861      * actual file.encoding value. This method is called from the JIS
       
   862      * Auto Detect converter.
       
   863      */
       
   864     static String getSJISName() {
       
   865         String encodeName = AccessController.doPrivileged(
       
   866                                                new PrivilegedAction<String>() {
       
   867             public String run() {
       
   868                 String osName = System.getProperty("os.name");
       
   869                 if (osName.equals("Solaris") || osName.equals("SunOS")){
       
   870                     return "PCK";
       
   871                 }
       
   872                 else {
       
   873                     return System.getProperty("file.encoding", null);
       
   874                 }
       
   875             }
       
   876         });
       
   877 
       
   878         if (encodeName != null) {
       
   879             if (encodeName.equals("MS932"))
       
   880                 return encodeName;
       
   881             encodeName = aliasName(encodeName);
       
   882         }
       
   883         return (encodeName != null && encodeName.equals("MS932")) ? encodeName : "SJIS";
       
   884     }
       
   885 
       
   886 
       
   887     static String getEUCJPName() {
       
   888       String encodeName = AccessController.doPrivileged(
       
   889                                               new PrivilegedAction<String>() {
       
   890           public String run() {
       
   891               String osName = System.getProperty("os.name");
       
   892               if (osName.equals("Solaris") || osName.equals("SunOS"))
       
   893                   return "eucJP-open";
       
   894               else
       
   895                   return "EUC_JP";
       
   896           }
       
   897       });
       
   898       return encodeName;
       
   899     }
       
   900 }