1 /*
   2  * reserved comment block
   3  * DO NOT REMOVE OR ALTER!
   4  */
   5 /*
   6  * Licensed to the Apache Software Foundation (ASF) under one or more
   7  * contributor license agreements.  See the NOTICE file distributed with
   8  * this work for additional information regarding copyright ownership.
   9  * The ASF licenses this file to You under the Apache License, Version 2.0
  10  * (the "License"); you may not use this file except in compliance with
  11  * the License.  You may obtain a copy of the License at
  12  * 
  13  *      http://www.apache.org/licenses/LICENSE-2.0
  14  * 
  15  * Unless required by applicable law or agreed to in writing, software
  16  * distributed under the License is distributed on an "AS IS" BASIS,
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18  * See the License for the specific language governing permissions and
  19  * limitations under the License.
  20  */
  21 
  22 package com.sun.org.apache.xerces.internal.util;
  23 
  24 import java.util.Hashtable;
  25 
  26 /**
  27  * EncodingMap is a convenience class which handles conversions between 
  28  * IANA encoding names and Java encoding names, and vice versa. The
  29  * encoding names used in XML instance documents <strong>must</strong>
  30  * be the IANA encoding names specified or one of the aliases for those names
  31  * which IANA defines.
  32  * <p>
  33  * <TABLE BORDER="0" WIDTH="100%">
  34  *  <TR>
  35  *      <TD WIDTH="33%">
  36  *          <P ALIGN="CENTER"><B>Common Name</B>
  37  *      </TD>
  38  *      <TD WIDTH="15%">
  39  *          <P ALIGN="CENTER"><B>Use this name in XML files</B>
  40  *      </TD>
  41  *      <TD WIDTH="12%">
  42  *          <P ALIGN="CENTER"><B>Name Type</B>
  43  *      </TD>
  44  *      <TD WIDTH="31%">
  45  *          <P ALIGN="CENTER"><B>Xerces converts to this Java Encoder Name</B>
  46  *      </TD>
  47  *  </TR>
  48  *  <TR>
  49  *      <TD WIDTH="33%">8 bit Unicode</TD>
  50  *      <TD WIDTH="15%">
  51  *          <P ALIGN="CENTER">UTF-8
  52  *      </TD>
  53  *      <TD WIDTH="12%">
  54  *          <P ALIGN="CENTER">IANA
  55  *      </TD>
  56  *      <TD WIDTH="31%">
  57  *          <P ALIGN="CENTER">UTF8
  58  *      </TD>
  59  *  </TR>
  60  *  <TR>
  61  *      <TD WIDTH="33%">ISO Latin 1</TD>
  62  *      <TD WIDTH="15%">
  63  *          <P ALIGN="CENTER">ISO-8859-1
  64  *      </TD>
  65  *      <TD WIDTH="12%">
  66  *          <P ALIGN="CENTER">MIME
  67  *      </TD>
  68  *      <TD WIDTH="31%">
  69  *          <P ALIGN="CENTER">ISO-8859-1
  70  *      </TD>
  71  *  </TR>
  72  *  <TR>
  73  *      <TD WIDTH="33%">ISO Latin 2</TD>
  74  *      <TD WIDTH="15%">
  75  *          <P ALIGN="CENTER">ISO-8859-2
  76  *      </TD>
  77  *      <TD WIDTH="12%">
  78  *          <P ALIGN="CENTER">MIME
  79  *      </TD>
  80  *      <TD WIDTH="31%">
  81  *          <P ALIGN="CENTER">ISO-8859-2
  82  *      </TD>
  83  *  </TR>
  84  *  <TR>
  85  *      <TD WIDTH="33%">ISO Latin 3</TD>
  86  *      <TD WIDTH="15%">
  87  *          <P ALIGN="CENTER">ISO-8859-3
  88  *      </TD>
  89  *      <TD WIDTH="12%">
  90  *          <P ALIGN="CENTER">MIME
  91  *      </TD>
  92  *      <TD WIDTH="31%">
  93  *          <P ALIGN="CENTER">ISO-8859-3
  94  *      </TD>
  95  *  </TR>
  96  *  <TR>
  97  *      <TD WIDTH="33%">ISO Latin 4</TD>
  98  *      <TD WIDTH="15%">
  99  *          <P ALIGN="CENTER">ISO-8859-4
 100  *      </TD>
 101  *      <TD WIDTH="12%">
 102  *          <P ALIGN="CENTER">MIME
 103  *      </TD>
 104  *      <TD WIDTH="31%">
 105  *          <P ALIGN="CENTER">ISO-8859-4
 106  *      </TD>
 107  *  </TR>
 108  *  <TR>
 109  *      <TD WIDTH="33%">ISO Latin Cyrillic</TD>
 110  *      <TD WIDTH="15%">
 111  *          <P ALIGN="CENTER">ISO-8859-5
 112  *      </TD>
 113  *      <TD WIDTH="12%">
 114  *          <P ALIGN="CENTER">MIME
 115  *      </TD>
 116  *      <TD WIDTH="31%">
 117  *          <P ALIGN="CENTER">ISO-8859-5
 118  *      </TD>
 119  *  </TR>
 120  *  <TR>
 121  *      <TD WIDTH="33%">ISO Latin Arabic</TD>
 122  *      <TD WIDTH="15%">
 123  *          <P ALIGN="CENTER">ISO-8859-6
 124  *      </TD>
 125  *      <TD WIDTH="12%">
 126  *          <P ALIGN="CENTER">MIME
 127  *      </TD>
 128  *      <TD WIDTH="31%">
 129  *          <P ALIGN="CENTER">ISO-8859-6
 130  *      </TD>
 131  *  </TR>
 132  *  <TR>
 133  *      <TD WIDTH="33%">ISO Latin Greek</TD>
 134  *      <TD WIDTH="15%">
 135  *          <P ALIGN="CENTER">ISO-8859-7
 136  *      </TD>
 137  *      <TD WIDTH="12%">
 138  *          <P ALIGN="CENTER">MIME
 139  *      </TD>
 140  *      <TD WIDTH="31%">
 141  *          <P ALIGN="CENTER">ISO-8859-7
 142  *      </TD>
 143  *  </TR>
 144  *  <TR>
 145  *      <TD WIDTH="33%">ISO Latin Hebrew</TD>
 146  *      <TD WIDTH="15%">
 147  *          <P ALIGN="CENTER">ISO-8859-8
 148  *      </TD>
 149  *      <TD WIDTH="12%">
 150  *          <P ALIGN="CENTER">MIME
 151  *      </TD>
 152  *      <TD WIDTH="31%">
 153  *          <P ALIGN="CENTER">ISO-8859-8
 154  *      </TD>
 155  *  </TR>
 156  *  <TR>
 157  *      <TD WIDTH="33%">ISO Latin 5</TD>
 158  *      <TD WIDTH="15%">
 159  *          <P ALIGN="CENTER">ISO-8859-9
 160  *      </TD>
 161  *      <TD WIDTH="12%">
 162  *          <P ALIGN="CENTER">MIME
 163  *      </TD>
 164  *      <TD WIDTH="31%">
 165  *          <P ALIGN="CENTER">ISO-8859-9
 166  *      </TD>
 167  *  </TR>
 168  *  <TR>
 169  *      <TD WIDTH="33%">EBCDIC: US</TD>
 170  *      <TD WIDTH="15%">
 171  *          <P ALIGN="CENTER">ebcdic-cp-us
 172  *      </TD>
 173  *      <TD WIDTH="12%">
 174  *          <P ALIGN="CENTER">IANA
 175  *      </TD>
 176  *      <TD WIDTH="31%">
 177  *          <P ALIGN="CENTER">cp037
 178  *      </TD>
 179  *  </TR>
 180  *  <TR>
 181  *      <TD WIDTH="33%">EBCDIC: Canada</TD>
 182  *      <TD WIDTH="15%">
 183  *          <P ALIGN="CENTER">ebcdic-cp-ca
 184  *      </TD>
 185  *      <TD WIDTH="12%">
 186  *          <P ALIGN="CENTER">IANA
 187  *      </TD>
 188  *      <TD WIDTH="31%">
 189  *          <P ALIGN="CENTER">cp037
 190  *      </TD>
 191  *  </TR>
 192  *  <TR>
 193  *      <TD WIDTH="33%">EBCDIC: Netherlands</TD>
 194  *      <TD WIDTH="15%">
 195  *          <P ALIGN="CENTER">ebcdic-cp-nl
 196  *      </TD>
 197  *      <TD WIDTH="12%">
 198  *          <P ALIGN="CENTER">IANA
 199  *      </TD>
 200  *      <TD WIDTH="31%">
 201  *          <P ALIGN="CENTER">cp037
 202  *      </TD>
 203  *  </TR>
 204  *  <TR>
 205  *      <TD WIDTH="33%">EBCDIC: Denmark</TD>
 206  *      <TD WIDTH="15%">
 207  *          <P ALIGN="CENTER">ebcdic-cp-dk
 208  *      </TD>
 209  *      <TD WIDTH="12%">
 210  *          <P ALIGN="CENTER">IANA
 211  *      </TD>
 212  *      <TD WIDTH="31%">
 213  *          <P ALIGN="CENTER">cp277
 214  *      </TD>
 215  *  </TR>
 216  *  <TR>
 217  *      <TD WIDTH="33%">EBCDIC: Norway</TD>
 218  *      <TD WIDTH="15%">
 219  *          <P ALIGN="CENTER">ebcdic-cp-no
 220  *      </TD>
 221  *      <TD WIDTH="12%">
 222  *          <P ALIGN="CENTER">IANA
 223  *      </TD>
 224  *      <TD WIDTH="31%">
 225  *          <P ALIGN="CENTER">cp277
 226  *      </TD>
 227  *  </TR>
 228  *  <TR>
 229  *      <TD WIDTH="33%">EBCDIC: Finland</TD>
 230  *      <TD WIDTH="15%">
 231  *          <P ALIGN="CENTER">ebcdic-cp-fi
 232  *      </TD>
 233  *      <TD WIDTH="12%">
 234  *          <P ALIGN="CENTER">IANA
 235  *      </TD>
 236  *      <TD WIDTH="31%">
 237  *          <P ALIGN="CENTER">cp278
 238  *      </TD>
 239  *  </TR>
 240  *  <TR>
 241  *      <TD WIDTH="33%">EBCDIC: Sweden</TD>
 242  *      <TD WIDTH="15%">
 243  *          <P ALIGN="CENTER">ebcdic-cp-se
 244  *      </TD>
 245  *      <TD WIDTH="12%">
 246  *          <P ALIGN="CENTER">IANA
 247  *      </TD>
 248  *      <TD WIDTH="31%">
 249  *          <P ALIGN="CENTER">cp278
 250  *      </TD>
 251  *  </TR>
 252  *  <TR>
 253  *      <TD WIDTH="33%">EBCDIC: Italy</TD>
 254  *      <TD WIDTH="15%">
 255  *          <P ALIGN="CENTER">ebcdic-cp-it
 256  *      </TD>
 257  *      <TD WIDTH="12%">
 258  *          <P ALIGN="CENTER">IANA
 259  *      </TD>
 260  *      <TD WIDTH="31%">
 261  *          <P ALIGN="CENTER">cp280
 262  *      </TD>
 263  *  </TR>
 264  *  <TR>
 265  *      <TD WIDTH="33%">EBCDIC: Spain, Latin America</TD>
 266  *      <TD WIDTH="15%">
 267  *          <P ALIGN="CENTER">ebcdic-cp-es
 268  *      </TD>
 269  *      <TD WIDTH="12%">
 270  *          <P ALIGN="CENTER">IANA
 271  *      </TD>
 272  *      <TD WIDTH="31%">
 273  *          <P ALIGN="CENTER">cp284
 274  *      </TD>
 275  *  </TR>
 276  *  <TR>
 277  *      <TD WIDTH="33%">EBCDIC: Great Britain</TD>
 278  *      <TD WIDTH="15%">
 279  *          <P ALIGN="CENTER">ebcdic-cp-gb
 280  *      </TD>
 281  *      <TD WIDTH="12%">
 282  *          <P ALIGN="CENTER">IANA
 283  *      </TD>
 284  *      <TD WIDTH="31%">
 285  *          <P ALIGN="CENTER">cp285
 286  *      </TD>
 287  *  </TR>
 288  *  <TR>
 289  *      <TD WIDTH="33%">EBCDIC: France</TD>
 290  *      <TD WIDTH="15%">
 291  *          <P ALIGN="CENTER">ebcdic-cp-fr
 292  *      </TD>
 293  *      <TD WIDTH="12%">
 294  *          <P ALIGN="CENTER">IANA
 295  *      </TD>
 296  *      <TD WIDTH="31%">
 297  *          <P ALIGN="CENTER">cp297
 298  *      </TD>
 299  *  </TR>
 300  *  <TR>
 301  *      <TD WIDTH="33%">EBCDIC: Arabic</TD>
 302  *      <TD WIDTH="15%">
 303  *          <P ALIGN="CENTER">ebcdic-cp-ar1
 304  *      </TD>
 305  *      <TD WIDTH="12%">
 306  *          <P ALIGN="CENTER">IANA
 307  *      </TD>
 308  *      <TD WIDTH="31%">
 309  *          <P ALIGN="CENTER">cp420
 310  *      </TD>
 311  *  </TR>
 312  *  <TR>
 313  *      <TD WIDTH="33%">EBCDIC: Hebrew</TD>
 314  *      <TD WIDTH="15%">
 315  *          <P ALIGN="CENTER">ebcdic-cp-he
 316  *      </TD>
 317  *      <TD WIDTH="12%">
 318  *          <P ALIGN="CENTER">IANA
 319  *      </TD>
 320  *      <TD WIDTH="31%">
 321  *          <P ALIGN="CENTER">cp424
 322  *      </TD>
 323  *  </TR>
 324  *  <TR>
 325  *      <TD WIDTH="33%">EBCDIC: Switzerland</TD>
 326  *      <TD WIDTH="15%">
 327  *          <P ALIGN="CENTER">ebcdic-cp-ch
 328  *      </TD>
 329  *      <TD WIDTH="12%">
 330  *          <P ALIGN="CENTER">IANA
 331  *      </TD>
 332  *      <TD WIDTH="31%">
 333  *          <P ALIGN="CENTER">cp500
 334  *      </TD>
 335  *  </TR>
 336  *  <TR>
 337  *      <TD WIDTH="33%">EBCDIC: Roece</TD>
 338  *      <TD WIDTH="15%">
 339  *          <P ALIGN="CENTER">ebcdic-cp-roece
 340  *      </TD>
 341  *      <TD WIDTH="12%">
 342  *          <P ALIGN="CENTER">IANA
 343  *      </TD>
 344  *      <TD WIDTH="31%">
 345  *          <P ALIGN="CENTER">cp870
 346  *      </TD>
 347  *  </TR>
 348  *  <TR>
 349  *      <TD WIDTH="33%">EBCDIC: Yugoslavia</TD>
 350  *      <TD WIDTH="15%">
 351  *          <P ALIGN="CENTER">ebcdic-cp-yu
 352  *      </TD>
 353  *      <TD WIDTH="12%">
 354  *          <P ALIGN="CENTER">IANA
 355  *      </TD>
 356  *      <TD WIDTH="31%">
 357  *          <P ALIGN="CENTER">cp870
 358  *      </TD>
 359  *  </TR>
 360  *  <TR>
 361  *      <TD WIDTH="33%">EBCDIC: Iceland</TD>
 362  *      <TD WIDTH="15%">
 363  *          <P ALIGN="CENTER">ebcdic-cp-is
 364  *      </TD>
 365  *      <TD WIDTH="12%">
 366  *          <P ALIGN="CENTER">IANA
 367  *      </TD>
 368  *      <TD WIDTH="31%">
 369  *          <P ALIGN="CENTER">cp871
 370  *      </TD>
 371  *  </TR>
 372  *  <TR>
 373  *      <TD WIDTH="33%">EBCDIC: Urdu</TD>
 374  *      <TD WIDTH="15%">
 375  *          <P ALIGN="CENTER">ebcdic-cp-ar2
 376  *      </TD>
 377  *      <TD WIDTH="12%">
 378  *          <P ALIGN="CENTER">IANA
 379  *      </TD>
 380  *      <TD WIDTH="31%">
 381  *          <P ALIGN="CENTER">cp918
 382  *      </TD>
 383  *  </TR>
 384  *  <TR>
 385  *      <TD WIDTH="33%">Chinese for PRC, mixed 1/2 byte</TD>
 386  *      <TD WIDTH="15%">
 387  *          <P ALIGN="CENTER">gb2312
 388  *      </TD>
 389  *      <TD WIDTH="12%">
 390  *          <P ALIGN="CENTER">MIME
 391  *      </TD>
 392  *      <TD WIDTH="31%">
 393  *          <P ALIGN="CENTER">GB2312
 394  *      </TD>
 395  *  </TR>
 396  *  <TR>
 397  *      <TD WIDTH="33%">Extended Unix Code, packed for Japanese</TD>
 398  *      <TD WIDTH="15%">
 399  *          <P ALIGN="CENTER">euc-jp
 400  *      </TD>
 401  *      <TD WIDTH="12%">
 402  *          <P ALIGN="CENTER">MIME
 403  *      </TD>
 404  *      <TD WIDTH="31%">
 405  *          <P ALIGN="CENTER">eucjis
 406  *      </TD>
 407  *  </TR>
 408  *  <TR>
 409  *      <TD WIDTH="33%">Japanese: iso-2022-jp</TD>
 410  *      <TD WIDTH="15%">
 411  *          <P ALIGN="CENTER">iso-2020-jp
 412  *      </TD>
 413  *      <TD WIDTH="12%">
 414  *          <P ALIGN="CENTER">MIME
 415  *      </TD>
 416  *      <TD WIDTH="31%">
 417  *          <P ALIGN="CENTER">JIS
 418  *      </TD>
 419  *  </TR>
 420  *  <TR>
 421  *      <TD WIDTH="33%">Japanese: Shift JIS</TD>
 422  *      <TD WIDTH="15%">
 423  *          <P ALIGN="CENTER">Shift_JIS
 424  *      </TD>
 425  *      <TD WIDTH="12%">
 426  *          <P ALIGN="CENTER">MIME
 427  *      </TD>
 428  *      <TD WIDTH="31%">
 429  *          <P ALIGN="CENTER">SJIS
 430  *      </TD>
 431  *  </TR>
 432  *  <TR>
 433  *      <TD WIDTH="33%">Chinese: Big5</TD>
 434  *      <TD WIDTH="15%">
 435  *          <P ALIGN="CENTER">Big5
 436  *      </TD>
 437  *      <TD WIDTH="12%">
 438  *          <P ALIGN="CENTER">MIME
 439  *      </TD>
 440  *      <TD WIDTH="31%">
 441  *          <P ALIGN="CENTER">Big5
 442  *      </TD>
 443  *  </TR>
 444  *  <TR>
 445  *      <TD WIDTH="33%">Extended Unix Code, packed for Korean</TD>
 446  *      <TD WIDTH="15%">
 447  *          <P ALIGN="CENTER">euc-kr
 448  *      </TD>
 449  *      <TD WIDTH="12%">
 450  *          <P ALIGN="CENTER">MIME
 451  *      </TD>
 452  *      <TD WIDTH="31%">
 453  *          <P ALIGN="CENTER">iso2022kr
 454  *      </TD>
 455  *  </TR>
 456  *  <TR>
 457  *      <TD WIDTH="33%">Cyrillic</TD>
 458  *      <TD WIDTH="15%">
 459  *          <P ALIGN="CENTER">koi8-r
 460  *      </TD>
 461  *      <TD WIDTH="12%">
 462  *          <P ALIGN="CENTER">MIME
 463  *      </TD>
 464  *      <TD WIDTH="31%">
 465  *          <P ALIGN="CENTER">koi8-r
 466  *      </TD>
 467  *  </TR>
 468  * </TABLE>
 469  * 
 470  * @author TAMURA Kent, IBM
 471  * @author Andy Clark, IBM
 472  *
 473  * @version $Id$
 474  */
 475 public class EncodingMap {
 476 
 477     //
 478     // Data
 479     //
 480 
 481     /** fIANA2JavaMap */
 482     protected final static Hashtable fIANA2JavaMap = new Hashtable();
 483 
 484     /** fJava2IANAMap */
 485     protected final static Hashtable fJava2IANAMap = new Hashtable();
 486 
 487     //
 488     // Static initialization
 489     //
 490 
 491     static {
 492 
 493         // add IANA to Java encoding mappings.
 494         fIANA2JavaMap.put("BIG5",            "Big5");
 495         fIANA2JavaMap.put("CSBIG5",            "Big5");
 496         fIANA2JavaMap.put("CP037",    "CP037");
 497         fIANA2JavaMap.put("IBM037",    "CP037");
 498         fIANA2JavaMap.put("CSIBM037",    "CP037");
 499         fIANA2JavaMap.put("EBCDIC-CP-US",    "CP037");
 500         fIANA2JavaMap.put("EBCDIC-CP-CA",    "CP037");
 501         fIANA2JavaMap.put("EBCDIC-CP-NL",    "CP037");
 502         fIANA2JavaMap.put("EBCDIC-CP-WT",    "CP037");
 503         fIANA2JavaMap.put("IBM273",    "CP273");
 504         fIANA2JavaMap.put("CP273",    "CP273");
 505         fIANA2JavaMap.put("CSIBM273",    "CP273");
 506         fIANA2JavaMap.put("IBM277",    "CP277");
 507         fIANA2JavaMap.put("CP277",    "CP277");
 508         fIANA2JavaMap.put("CSIBM277",    "CP277");
 509         fIANA2JavaMap.put("EBCDIC-CP-DK",    "CP277");
 510         fIANA2JavaMap.put("EBCDIC-CP-NO",    "CP277");
 511         fIANA2JavaMap.put("IBM278",    "CP278");
 512         fIANA2JavaMap.put("CP278",    "CP278");
 513         fIANA2JavaMap.put("CSIBM278",    "CP278");
 514         fIANA2JavaMap.put("EBCDIC-CP-FI",    "CP278");
 515         fIANA2JavaMap.put("EBCDIC-CP-SE",    "CP278");
 516         fIANA2JavaMap.put("IBM280",    "CP280");
 517         fIANA2JavaMap.put("CP280",    "CP280");
 518         fIANA2JavaMap.put("CSIBM280",    "CP280");
 519         fIANA2JavaMap.put("EBCDIC-CP-IT",    "CP280");
 520         fIANA2JavaMap.put("IBM284",    "CP284");
 521         fIANA2JavaMap.put("CP284",    "CP284");
 522         fIANA2JavaMap.put("CSIBM284",    "CP284");
 523         fIANA2JavaMap.put("EBCDIC-CP-ES",    "CP284");
 524         fIANA2JavaMap.put("EBCDIC-CP-GB",    "CP285");
 525         fIANA2JavaMap.put("IBM285",    "CP285");
 526         fIANA2JavaMap.put("CP285",    "CP285");
 527         fIANA2JavaMap.put("CSIBM285",    "CP285");
 528         fIANA2JavaMap.put("EBCDIC-JP-KANA",    "CP290");
 529         fIANA2JavaMap.put("IBM290",    "CP290");
 530         fIANA2JavaMap.put("CP290",    "CP290");
 531         fIANA2JavaMap.put("CSIBM290",    "CP290");
 532         fIANA2JavaMap.put("EBCDIC-CP-FR",    "CP297");
 533         fIANA2JavaMap.put("IBM297",    "CP297");
 534         fIANA2JavaMap.put("CP297",    "CP297");
 535         fIANA2JavaMap.put("CSIBM297",    "CP297");
 536         fIANA2JavaMap.put("EBCDIC-CP-AR1",   "CP420");
 537         fIANA2JavaMap.put("IBM420",    "CP420");
 538         fIANA2JavaMap.put("CP420",    "CP420");
 539         fIANA2JavaMap.put("CSIBM420",    "CP420");
 540         fIANA2JavaMap.put("EBCDIC-CP-HE",    "CP424");
 541         fIANA2JavaMap.put("IBM424",    "CP424");
 542         fIANA2JavaMap.put("CP424",    "CP424");
 543         fIANA2JavaMap.put("CSIBM424",    "CP424");
 544         fIANA2JavaMap.put("IBM437",    "CP437");
 545         fIANA2JavaMap.put("437",    "CP437");
 546         fIANA2JavaMap.put("CP437",    "CP437");
 547         fIANA2JavaMap.put("CSPC8CODEPAGE437",    "CP437");
 548         fIANA2JavaMap.put("EBCDIC-CP-CH",    "CP500");
 549         fIANA2JavaMap.put("IBM500",    "CP500");
 550         fIANA2JavaMap.put("CP500",    "CP500");
 551         fIANA2JavaMap.put("CSIBM500",    "CP500");
 552         fIANA2JavaMap.put("EBCDIC-CP-CH",    "CP500");
 553         fIANA2JavaMap.put("EBCDIC-CP-BE",    "CP500"); 
 554         fIANA2JavaMap.put("IBM775",    "CP775");
 555         fIANA2JavaMap.put("CP775",    "CP775");
 556         fIANA2JavaMap.put("CSPC775BALTIC",    "CP775");
 557         fIANA2JavaMap.put("IBM850",    "CP850");
 558         fIANA2JavaMap.put("850",    "CP850");
 559         fIANA2JavaMap.put("CP850",    "CP850");
 560         fIANA2JavaMap.put("CSPC850MULTILINGUAL",    "CP850");
 561         fIANA2JavaMap.put("IBM852",    "CP852");
 562         fIANA2JavaMap.put("852",    "CP852");
 563         fIANA2JavaMap.put("CP852",    "CP852");
 564         fIANA2JavaMap.put("CSPCP852",    "CP852");
 565         fIANA2JavaMap.put("IBM855",    "CP855");
 566         fIANA2JavaMap.put("855",    "CP855");
 567         fIANA2JavaMap.put("CP855",    "CP855");
 568         fIANA2JavaMap.put("CSIBM855",    "CP855");
 569         fIANA2JavaMap.put("IBM857",    "CP857");
 570         fIANA2JavaMap.put("857",    "CP857");
 571         fIANA2JavaMap.put("CP857",    "CP857");
 572         fIANA2JavaMap.put("CSIBM857",    "CP857");
 573         fIANA2JavaMap.put("IBM00858",    "CP858");
 574         fIANA2JavaMap.put("CP00858",    "CP858");
 575         fIANA2JavaMap.put("CCSID00858",    "CP858");
 576         fIANA2JavaMap.put("IBM860",    "CP860");
 577         fIANA2JavaMap.put("860",    "CP860");
 578         fIANA2JavaMap.put("CP860",    "CP860");
 579         fIANA2JavaMap.put("CSIBM860",    "CP860");
 580         fIANA2JavaMap.put("IBM861",    "CP861");
 581         fIANA2JavaMap.put("861",    "CP861");
 582         fIANA2JavaMap.put("CP861",    "CP861");
 583         fIANA2JavaMap.put("CP-IS",    "CP861");
 584         fIANA2JavaMap.put("CSIBM861",    "CP861");
 585         fIANA2JavaMap.put("IBM862",    "CP862");
 586         fIANA2JavaMap.put("862",    "CP862");
 587         fIANA2JavaMap.put("CP862",    "CP862");
 588         fIANA2JavaMap.put("CSPC862LATINHEBREW",    "CP862");
 589         fIANA2JavaMap.put("IBM863",    "CP863");
 590         fIANA2JavaMap.put("863",    "CP863");
 591         fIANA2JavaMap.put("CP863",    "CP863");
 592         fIANA2JavaMap.put("CSIBM863",    "CP863");
 593         fIANA2JavaMap.put("IBM864",    "CP864");
 594         fIANA2JavaMap.put("CP864",    "CP864");
 595         fIANA2JavaMap.put("CSIBM864",    "CP864");
 596         fIANA2JavaMap.put("IBM865",    "CP865");
 597         fIANA2JavaMap.put("865",    "CP865");
 598         fIANA2JavaMap.put("CP865",    "CP865");
 599         fIANA2JavaMap.put("CSIBM865",    "CP865");
 600         fIANA2JavaMap.put("IBM866",    "CP866");
 601         fIANA2JavaMap.put("866",    "CP866");
 602         fIANA2JavaMap.put("CP866",    "CP866");
 603         fIANA2JavaMap.put("CSIBM866",    "CP866");
 604         fIANA2JavaMap.put("IBM868",    "CP868");
 605         fIANA2JavaMap.put("CP868",    "CP868");
 606         fIANA2JavaMap.put("CSIBM868",    "CP868");
 607         fIANA2JavaMap.put("CP-AR",        "CP868");
 608         fIANA2JavaMap.put("IBM869",    "CP869");
 609         fIANA2JavaMap.put("CP869",    "CP869");
 610         fIANA2JavaMap.put("CSIBM869",    "CP869");
 611         fIANA2JavaMap.put("CP-GR",        "CP869");
 612         fIANA2JavaMap.put("IBM870",    "CP870");
 613         fIANA2JavaMap.put("CP870",    "CP870");
 614         fIANA2JavaMap.put("CSIBM870",    "CP870");
 615         fIANA2JavaMap.put("EBCDIC-CP-ROECE", "CP870");
 616         fIANA2JavaMap.put("EBCDIC-CP-YU",    "CP870");
 617         fIANA2JavaMap.put("IBM871",    "CP871");
 618         fIANA2JavaMap.put("CP871",    "CP871");
 619         fIANA2JavaMap.put("CSIBM871",    "CP871");
 620         fIANA2JavaMap.put("EBCDIC-CP-IS",    "CP871");
 621         fIANA2JavaMap.put("IBM918",    "CP918");
 622         fIANA2JavaMap.put("CP918",    "CP918");
 623         fIANA2JavaMap.put("CSIBM918",    "CP918");
 624         fIANA2JavaMap.put("EBCDIC-CP-AR2",   "CP918");
 625         fIANA2JavaMap.put("IBM00924",    "CP924");
 626         fIANA2JavaMap.put("CP00924",    "CP924");
 627         fIANA2JavaMap.put("CCSID00924",    "CP924");
 628         // is this an error???
 629         fIANA2JavaMap.put("EBCDIC-LATIN9--EURO",    "CP924");
 630         fIANA2JavaMap.put("IBM1026",    "CP1026");
 631         fIANA2JavaMap.put("CP1026",    "CP1026");
 632         fIANA2JavaMap.put("CSIBM1026",    "CP1026");
 633         fIANA2JavaMap.put("IBM01140",    "Cp1140");
 634         fIANA2JavaMap.put("CP01140",    "Cp1140");
 635         fIANA2JavaMap.put("CCSID01140",    "Cp1140");
 636         fIANA2JavaMap.put("IBM01141",    "Cp1141");
 637         fIANA2JavaMap.put("CP01141",    "Cp1141");
 638         fIANA2JavaMap.put("CCSID01141",    "Cp1141");
 639         fIANA2JavaMap.put("IBM01142",    "Cp1142");
 640         fIANA2JavaMap.put("CP01142",    "Cp1142");
 641         fIANA2JavaMap.put("CCSID01142",    "Cp1142");
 642         fIANA2JavaMap.put("IBM01143",    "Cp1143");
 643         fIANA2JavaMap.put("CP01143",    "Cp1143");
 644         fIANA2JavaMap.put("CCSID01143",    "Cp1143");
 645         fIANA2JavaMap.put("IBM01144",    "Cp1144");
 646         fIANA2JavaMap.put("CP01144",    "Cp1144");
 647         fIANA2JavaMap.put("CCSID01144",    "Cp1144");
 648         fIANA2JavaMap.put("IBM01145",    "Cp1145");
 649         fIANA2JavaMap.put("CP01145",    "Cp1145");
 650         fIANA2JavaMap.put("CCSID01145",    "Cp1145");
 651         fIANA2JavaMap.put("IBM01146",    "Cp1146");
 652         fIANA2JavaMap.put("CP01146",    "Cp1146");
 653         fIANA2JavaMap.put("CCSID01146",    "Cp1146");
 654         fIANA2JavaMap.put("IBM01147",    "Cp1147");
 655         fIANA2JavaMap.put("CP01147",    "Cp1147");
 656         fIANA2JavaMap.put("CCSID01147",    "Cp1147");
 657         fIANA2JavaMap.put("IBM01148",    "Cp1148");
 658         fIANA2JavaMap.put("CP01148",    "Cp1148");
 659         fIANA2JavaMap.put("CCSID01148",    "Cp1148");
 660         fIANA2JavaMap.put("IBM01149",    "Cp1149");
 661         fIANA2JavaMap.put("CP01149",    "Cp1149");
 662         fIANA2JavaMap.put("CCSID01149",    "Cp1149");
 663         fIANA2JavaMap.put("EUC-JP",          "EUCJIS");
 664         fIANA2JavaMap.put("CSEUCPKDFMTJAPANESE",          "EUCJIS");
 665         fIANA2JavaMap.put("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE",          "EUCJIS");
 666         fIANA2JavaMap.put("EUC-KR",          "KSC5601");
 667         fIANA2JavaMap.put("CSEUCKR",          "KSC5601");
 668         fIANA2JavaMap.put("KS_C_5601-1987",          "KS_C_5601-1987");
 669         fIANA2JavaMap.put("ISO-IR-149",          "KS_C_5601-1987");
 670         fIANA2JavaMap.put("KS_C_5601-1989",          "KS_C_5601-1987");
 671         fIANA2JavaMap.put("KSC_5601",          "KS_C_5601-1987");
 672         fIANA2JavaMap.put("KOREAN",          "KS_C_5601-1987");
 673         fIANA2JavaMap.put("CSKSC56011987",          "KS_C_5601-1987");
 674         fIANA2JavaMap.put("GB2312",          "GB2312");
 675         fIANA2JavaMap.put("CSGB2312",          "GB2312");
 676         fIANA2JavaMap.put("ISO-2022-JP",     "JIS");
 677         fIANA2JavaMap.put("CSISO2022JP",     "JIS");
 678         fIANA2JavaMap.put("ISO-2022-KR",     "ISO2022KR");
 679         fIANA2JavaMap.put("CSISO2022KR",     "ISO2022KR");
 680         fIANA2JavaMap.put("ISO-2022-CN",     "ISO2022CN");
 681 
 682         fIANA2JavaMap.put("X0201",  "JIS0201");
 683         fIANA2JavaMap.put("CSISO13JISC6220JP", "JIS0201");
 684         fIANA2JavaMap.put("X0208",  "JIS0208");
 685         fIANA2JavaMap.put("ISO-IR-87",  "JIS0208");
 686         fIANA2JavaMap.put("X0208dbiJIS_X0208-1983",  "JIS0208");
 687         fIANA2JavaMap.put("CSISO87JISX0208",  "JIS0208");
 688         fIANA2JavaMap.put("X0212",  "JIS0212");
 689         fIANA2JavaMap.put("ISO-IR-159",  "JIS0212");
 690         fIANA2JavaMap.put("CSISO159JISX02121990",  "JIS0212");
 691         fIANA2JavaMap.put("GB18030",       "GB18030");
 692         fIANA2JavaMap.put("GBK",       "GBK");
 693         fIANA2JavaMap.put("CP936",       "GBK");
 694         fIANA2JavaMap.put("MS936",       "GBK");
 695         fIANA2JavaMap.put("WINDOWS-936",       "GBK");
 696         fIANA2JavaMap.put("SHIFT_JIS",       "SJIS");
 697         fIANA2JavaMap.put("CSSHIFTJIS",       "SJIS");
 698         fIANA2JavaMap.put("MS_KANJI",       "SJIS");
 699         fIANA2JavaMap.put("WINDOWS-31J",       "MS932");
 700         fIANA2JavaMap.put("CSWINDOWS31J",       "MS932");
 701 
 702             // Add support for Cp1252 and its friends
 703         fIANA2JavaMap.put("WINDOWS-1250",   "Cp1250");
 704         fIANA2JavaMap.put("WINDOWS-1251",   "Cp1251");
 705         fIANA2JavaMap.put("WINDOWS-1252",   "Cp1252");
 706         fIANA2JavaMap.put("WINDOWS-1253",   "Cp1253");
 707         fIANA2JavaMap.put("WINDOWS-1254",   "Cp1254");
 708         fIANA2JavaMap.put("WINDOWS-1255",   "Cp1255");
 709         fIANA2JavaMap.put("WINDOWS-1256",   "Cp1256");
 710         fIANA2JavaMap.put("WINDOWS-1257",   "Cp1257");
 711         fIANA2JavaMap.put("WINDOWS-1258",   "Cp1258");
 712         fIANA2JavaMap.put("TIS-620",   "TIS620");
 713 
 714         fIANA2JavaMap.put("ISO-8859-1",      "ISO8859_1"); 
 715         fIANA2JavaMap.put("ISO-IR-100",      "ISO8859_1");
 716         fIANA2JavaMap.put("ISO_8859-1",      "ISO8859_1");
 717         fIANA2JavaMap.put("LATIN1",      "ISO8859_1");
 718         fIANA2JavaMap.put("CSISOLATIN1",      "ISO8859_1");
 719         fIANA2JavaMap.put("L1",      "ISO8859_1");
 720         fIANA2JavaMap.put("IBM819",      "ISO8859_1");
 721         fIANA2JavaMap.put("CP819",      "ISO8859_1");
 722 
 723         fIANA2JavaMap.put("ISO-8859-2",      "ISO8859_2"); 
 724         fIANA2JavaMap.put("ISO-IR-101",      "ISO8859_2");
 725         fIANA2JavaMap.put("ISO_8859-2",      "ISO8859_2");
 726         fIANA2JavaMap.put("LATIN2",      "ISO8859_2");
 727         fIANA2JavaMap.put("CSISOLATIN2",      "ISO8859_2");
 728         fIANA2JavaMap.put("L2",      "ISO8859_2");
 729 
 730         fIANA2JavaMap.put("ISO-8859-3",      "ISO8859_3"); 
 731         fIANA2JavaMap.put("ISO-IR-109",      "ISO8859_3");
 732         fIANA2JavaMap.put("ISO_8859-3",      "ISO8859_3");
 733         fIANA2JavaMap.put("LATIN3",      "ISO8859_3");
 734         fIANA2JavaMap.put("CSISOLATIN3",      "ISO8859_3");
 735         fIANA2JavaMap.put("L3",      "ISO8859_3");
 736 
 737         fIANA2JavaMap.put("ISO-8859-4",      "ISO8859_4"); 
 738         fIANA2JavaMap.put("ISO-IR-110",      "ISO8859_4");
 739         fIANA2JavaMap.put("ISO_8859-4",      "ISO8859_4");
 740         fIANA2JavaMap.put("LATIN4",      "ISO8859_4");
 741         fIANA2JavaMap.put("CSISOLATIN4",      "ISO8859_4");
 742         fIANA2JavaMap.put("L4",      "ISO8859_4");
 743 
 744         fIANA2JavaMap.put("ISO-8859-5",      "ISO8859_5"); 
 745         fIANA2JavaMap.put("ISO-IR-144",      "ISO8859_5");
 746         fIANA2JavaMap.put("ISO_8859-5",      "ISO8859_5");
 747         fIANA2JavaMap.put("CYRILLIC",      "ISO8859_5");
 748         fIANA2JavaMap.put("CSISOLATINCYRILLIC",      "ISO8859_5");
 749 
 750         fIANA2JavaMap.put("ISO-8859-6",      "ISO8859_6"); 
 751         fIANA2JavaMap.put("ISO-IR-127",      "ISO8859_6");
 752         fIANA2JavaMap.put("ISO_8859-6",      "ISO8859_6");
 753         fIANA2JavaMap.put("ECMA-114",      "ISO8859_6");
 754         fIANA2JavaMap.put("ASMO-708",      "ISO8859_6");
 755         fIANA2JavaMap.put("ARABIC",      "ISO8859_6");
 756         fIANA2JavaMap.put("CSISOLATINARABIC",      "ISO8859_6");
 757 
 758         fIANA2JavaMap.put("ISO-8859-7",      "ISO8859_7"); 
 759         fIANA2JavaMap.put("ISO-IR-126",      "ISO8859_7");
 760         fIANA2JavaMap.put("ISO_8859-7",      "ISO8859_7");
 761         fIANA2JavaMap.put("ELOT_928",      "ISO8859_7");
 762         fIANA2JavaMap.put("ECMA-118",      "ISO8859_7");
 763         fIANA2JavaMap.put("GREEK",      "ISO8859_7");
 764         fIANA2JavaMap.put("CSISOLATINGREEK",      "ISO8859_7");
 765         fIANA2JavaMap.put("GREEK8",      "ISO8859_7");
 766 
 767         fIANA2JavaMap.put("ISO-8859-8",      "ISO8859_8"); 
 768         fIANA2JavaMap.put("ISO-8859-8-I",      "ISO8859_8"); // added since this encoding only differs w.r.t. presentation 
 769         fIANA2JavaMap.put("ISO-IR-138",      "ISO8859_8");
 770         fIANA2JavaMap.put("ISO_8859-8",      "ISO8859_8");
 771         fIANA2JavaMap.put("HEBREW",      "ISO8859_8");
 772         fIANA2JavaMap.put("CSISOLATINHEBREW",      "ISO8859_8");
 773 
 774         fIANA2JavaMap.put("ISO-8859-9",      "ISO8859_9"); 
 775         fIANA2JavaMap.put("ISO-IR-148",      "ISO8859_9");
 776         fIANA2JavaMap.put("ISO_8859-9",      "ISO8859_9");
 777         fIANA2JavaMap.put("LATIN5",      "ISO8859_9");
 778         fIANA2JavaMap.put("CSISOLATIN5",      "ISO8859_9");
 779         fIANA2JavaMap.put("L5",      "ISO8859_9");
 780 
 781         fIANA2JavaMap.put("ISO-8859-13",      "ISO8859_13"); 
 782         
 783         fIANA2JavaMap.put("ISO-8859-15",      "ISO8859_15_FDIS"); 
 784         fIANA2JavaMap.put("ISO_8859-15",      "ISO8859_15_FDIS");
 785         fIANA2JavaMap.put("LATIN-9",          "ISO8859_15_FDIS"); 
 786 
 787         fIANA2JavaMap.put("KOI8-R",          "KOI8_R");
 788         fIANA2JavaMap.put("CSKOI8R",          "KOI8_R");
 789         fIANA2JavaMap.put("US-ASCII",        "ASCII"); 
 790         fIANA2JavaMap.put("ISO-IR-6",        "ASCII");
 791         fIANA2JavaMap.put("ANSI_X3.4-1968",        "ASCII");
 792         fIANA2JavaMap.put("ANSI_X3.4-1986",        "ASCII");
 793         fIANA2JavaMap.put("ISO_646.IRV:1991",        "ASCII");
 794         fIANA2JavaMap.put("ASCII",        "ASCII");
 795         fIANA2JavaMap.put("CSASCII",        "ASCII");
 796         fIANA2JavaMap.put("ISO646-US",        "ASCII");
 797         fIANA2JavaMap.put("US",        "ASCII");
 798         fIANA2JavaMap.put("IBM367",        "ASCII");
 799         fIANA2JavaMap.put("CP367",        "ASCII");
 800         fIANA2JavaMap.put("UTF-8",           "UTF8");
 801         fIANA2JavaMap.put("UTF-16",           "UTF-16");
 802         fIANA2JavaMap.put("UTF-16BE",           "UnicodeBig");
 803         fIANA2JavaMap.put("UTF-16LE",           "UnicodeLittle");
 804 
 805         // support for 1047, as proposed to be added to the 
 806         // IANA registry in 
 807         // http://lists.w3.org/Archives/Public/ietf-charset/2002JulSep/0049.html
 808         fIANA2JavaMap.put("IBM-1047",    "Cp1047");
 809         fIANA2JavaMap.put("IBM1047",    "Cp1047");
 810         fIANA2JavaMap.put("CP1047",    "Cp1047");
 811 
 812         // Adding new aliases as proposed in
 813         // http://lists.w3.org/Archives/Public/ietf-charset/2002JulSep/0058.html
 814         fIANA2JavaMap.put("IBM-37",    "CP037");
 815         fIANA2JavaMap.put("IBM-273",    "CP273");
 816         fIANA2JavaMap.put("IBM-277",    "CP277");
 817         fIANA2JavaMap.put("IBM-278",    "CP278");
 818         fIANA2JavaMap.put("IBM-280",    "CP280");
 819         fIANA2JavaMap.put("IBM-284",    "CP284");
 820         fIANA2JavaMap.put("IBM-285",    "CP285");
 821         fIANA2JavaMap.put("IBM-290",    "CP290");
 822         fIANA2JavaMap.put("IBM-297",    "CP297");
 823         fIANA2JavaMap.put("IBM-420",    "CP420");
 824         fIANA2JavaMap.put("IBM-424",    "CP424");
 825         fIANA2JavaMap.put("IBM-437",    "CP437");
 826         fIANA2JavaMap.put("IBM-500",    "CP500");
 827         fIANA2JavaMap.put("IBM-775",    "CP775");
 828         fIANA2JavaMap.put("IBM-850",    "CP850");
 829         fIANA2JavaMap.put("IBM-852",    "CP852");
 830         fIANA2JavaMap.put("IBM-855",    "CP855");
 831         fIANA2JavaMap.put("IBM-857",    "CP857");
 832         fIANA2JavaMap.put("IBM-858",    "CP858");
 833         fIANA2JavaMap.put("IBM-860",    "CP860");
 834         fIANA2JavaMap.put("IBM-861",    "CP861");
 835         fIANA2JavaMap.put("IBM-862",    "CP862");
 836         fIANA2JavaMap.put("IBM-863",    "CP863");
 837         fIANA2JavaMap.put("IBM-864",    "CP864");
 838         fIANA2JavaMap.put("IBM-865",    "CP865");
 839         fIANA2JavaMap.put("IBM-866",    "CP866");
 840         fIANA2JavaMap.put("IBM-868",    "CP868");
 841         fIANA2JavaMap.put("IBM-869",    "CP869");
 842         fIANA2JavaMap.put("IBM-870",    "CP870");
 843         fIANA2JavaMap.put("IBM-871",    "CP871");
 844         fIANA2JavaMap.put("IBM-918",    "CP918");
 845         fIANA2JavaMap.put("IBM-924",    "CP924");
 846         fIANA2JavaMap.put("IBM-1026",    "CP1026");
 847         fIANA2JavaMap.put("IBM-1140",    "Cp1140");
 848         fIANA2JavaMap.put("IBM-1141",    "Cp1141");
 849         fIANA2JavaMap.put("IBM-1142",    "Cp1142");
 850         fIANA2JavaMap.put("IBM-1143",    "Cp1143");
 851         fIANA2JavaMap.put("IBM-1144",    "Cp1144");
 852         fIANA2JavaMap.put("IBM-1145",    "Cp1145");
 853         fIANA2JavaMap.put("IBM-1146",    "Cp1146");
 854         fIANA2JavaMap.put("IBM-1147",    "Cp1147");
 855         fIANA2JavaMap.put("IBM-1148",    "Cp1148");
 856         fIANA2JavaMap.put("IBM-1149",    "Cp1149");
 857         fIANA2JavaMap.put("IBM-819",      "ISO8859_1");
 858         fIANA2JavaMap.put("IBM-367",        "ASCII");
 859 
 860         // REVISIT:
 861         //   j:CNS11643 -> EUC-TW?
 862         //   ISO-2022-CN? ISO-2022-CN-EXT?
 863                                                 
 864         // add Java to IANA encoding mappings
 865         //fJava2IANAMap.put("8859_1",    "US-ASCII"); // ?
 866         fJava2IANAMap.put("ISO8859_1",    "ISO-8859-1");
 867         fJava2IANAMap.put("ISO8859_2",    "ISO-8859-2");
 868         fJava2IANAMap.put("ISO8859_3",    "ISO-8859-3");
 869         fJava2IANAMap.put("ISO8859_4",    "ISO-8859-4");
 870         fJava2IANAMap.put("ISO8859_5",    "ISO-8859-5");
 871         fJava2IANAMap.put("ISO8859_6",    "ISO-8859-6");
 872         fJava2IANAMap.put("ISO8859_7",    "ISO-8859-7");
 873         fJava2IANAMap.put("ISO8859_8",    "ISO-8859-8");
 874         fJava2IANAMap.put("ISO8859_9",    "ISO-8859-9");
 875         fJava2IANAMap.put("ISO8859_13",    "ISO-8859-13");
 876         fJava2IANAMap.put("ISO8859_15",    "ISO-8859-15");
 877         fJava2IANAMap.put("ISO8859_15_FDIS",    "ISO-8859-15");
 878         fJava2IANAMap.put("Big5",      "BIG5");
 879         fJava2IANAMap.put("CP037",     "EBCDIC-CP-US");
 880         fJava2IANAMap.put("CP273",     "IBM273");
 881         fJava2IANAMap.put("CP277",     "EBCDIC-CP-DK");
 882         fJava2IANAMap.put("CP278",     "EBCDIC-CP-FI");
 883         fJava2IANAMap.put("CP280",     "EBCDIC-CP-IT");
 884         fJava2IANAMap.put("CP284",     "EBCDIC-CP-ES");
 885         fJava2IANAMap.put("CP285",     "EBCDIC-CP-GB");
 886         fJava2IANAMap.put("CP290",     "EBCDIC-JP-KANA");
 887         fJava2IANAMap.put("CP297",     "EBCDIC-CP-FR");
 888         fJava2IANAMap.put("CP420",     "EBCDIC-CP-AR1");
 889         fJava2IANAMap.put("CP424",     "EBCDIC-CP-HE");
 890         fJava2IANAMap.put("CP437",     "IBM437");
 891         fJava2IANAMap.put("CP500",     "EBCDIC-CP-CH");
 892         fJava2IANAMap.put("CP775",     "IBM775");
 893         fJava2IANAMap.put("CP850",     "IBM850");
 894         fJava2IANAMap.put("CP852",     "IBM852");
 895         fJava2IANAMap.put("CP855",     "IBM855");
 896         fJava2IANAMap.put("CP857",     "IBM857");
 897         fJava2IANAMap.put("CP858",     "IBM00858");
 898         fJava2IANAMap.put("CP860",     "IBM860");
 899         fJava2IANAMap.put("CP861",     "IBM861");
 900         fJava2IANAMap.put("CP862",     "IBM862");
 901         fJava2IANAMap.put("CP863",     "IBM863");
 902         fJava2IANAMap.put("CP864",     "IBM864");
 903         fJava2IANAMap.put("CP865",     "IBM865");
 904         fJava2IANAMap.put("CP866",     "IBM866");
 905         fJava2IANAMap.put("CP868",     "IBM868");
 906         fJava2IANAMap.put("CP869",     "IBM869");
 907         fJava2IANAMap.put("CP870",     "EBCDIC-CP-ROECE");
 908         fJava2IANAMap.put("CP871",     "EBCDIC-CP-IS");
 909         fJava2IANAMap.put("CP918",     "EBCDIC-CP-AR2");
 910         fJava2IANAMap.put("CP924",     "IBM00924");
 911         fJava2IANAMap.put("CP1026",     "IBM1026");
 912         fJava2IANAMap.put("CP1140",     "IBM01140");
 913         fJava2IANAMap.put("CP1141",     "IBM01141");
 914         fJava2IANAMap.put("CP1142",     "IBM01142");
 915         fJava2IANAMap.put("CP1143",     "IBM01143");
 916         fJava2IANAMap.put("CP1144",     "IBM01144");
 917         fJava2IANAMap.put("CP1145",     "IBM01145");
 918         fJava2IANAMap.put("CP1146",     "IBM01146");
 919         fJava2IANAMap.put("CP1147",     "IBM01147");
 920         fJava2IANAMap.put("CP1148",     "IBM01148");
 921         fJava2IANAMap.put("CP1149",     "IBM01149");
 922         fJava2IANAMap.put("EUCJIS",    "EUC-JP");
 923         fJava2IANAMap.put("KS_C_5601-1987",          "KS_C_5601-1987");
 924         fJava2IANAMap.put("GB2312",    "GB2312");
 925         fJava2IANAMap.put("ISO2022KR", "ISO-2022-KR");
 926         fJava2IANAMap.put("ISO2022CN", "ISO-2022-CN");
 927         fJava2IANAMap.put("JIS",       "ISO-2022-JP");
 928         fJava2IANAMap.put("KOI8_R",    "KOI8-R");
 929         fJava2IANAMap.put("KSC5601",   "EUC-KR");
 930         fJava2IANAMap.put("GB18030",      "GB18030");
 931         fJava2IANAMap.put("GBK",       "GBK");
 932         fJava2IANAMap.put("SJIS",      "SHIFT_JIS");
 933         fJava2IANAMap.put("MS932",      "WINDOWS-31J");
 934         fJava2IANAMap.put("UTF8",      "UTF-8");
 935         fJava2IANAMap.put("Unicode",   "UTF-16");
 936         fJava2IANAMap.put("UnicodeBig",   "UTF-16BE");
 937         fJava2IANAMap.put("UnicodeLittle",   "UTF-16LE");
 938         fJava2IANAMap.put("JIS0201",  "X0201");
 939         fJava2IANAMap.put("JIS0208",  "X0208");
 940         fJava2IANAMap.put("JIS0212",  "ISO-IR-159");
 941 
 942         // proposed addition (see above for details):
 943         fJava2IANAMap.put("CP1047",    "IBM1047");
 944 
 945     } // <clinit>()
 946 
 947     //
 948     // Constructors
 949     //
 950 
 951     /** Default constructor. */
 952     public EncodingMap() {}
 953 
 954     //
 955     // Public static methods
 956     //
 957 
 958     /**
 959      * Adds an IANA to Java encoding name mapping.
 960      * 
 961      * @param ianaEncoding The IANA encoding name.
 962      * @param javaEncoding The Java encoding name.
 963      * 
 964      * @deprecated Use of this method is not recommended. Its
 965      * effect is JVM wide and may cause unforeseen behaviour
 966      * for other applications running in the system.
 967      */
 968     public static void putIANA2JavaMapping(String ianaEncoding, 
 969                                            String javaEncoding) {
 970         fIANA2JavaMap.put(ianaEncoding, javaEncoding);
 971     } // putIANA2JavaMapping(String,String)
 972 
 973     /**
 974      * Returns the Java encoding name for the specified IANA encoding name.
 975      * 
 976      * @param ianaEncoding The IANA encoding name.
 977      */
 978     public static String getIANA2JavaMapping(String ianaEncoding) {
 979         return (String)fIANA2JavaMap.get(ianaEncoding);
 980     } // getIANA2JavaMapping(String):String
 981 
 982     /**
 983      * Removes an IANA to Java encoding name mapping.
 984      * 
 985      * @param ianaEncoding The IANA encoding name.
 986      * 
 987      * @deprecated Use of this method is not recommended. Its
 988      * effect is JVM wide and may cause unforeseen behaviour
 989      * for other applications running in the system.
 990      */
 991     public static String removeIANA2JavaMapping(String ianaEncoding) {
 992         return (String)fIANA2JavaMap.remove(ianaEncoding);
 993     } // removeIANA2JavaMapping(String):String
 994 
 995     /**
 996      * Adds a Java to IANA encoding name mapping.
 997      * 
 998      * @param javaEncoding The Java encoding name.
 999      * @param ianaEncoding The IANA encoding name.
1000      * 
1001      * @deprecated Use of this method is not recommended. Its
1002      * effect is JVM wide and may cause unforeseen behaviour
1003      * for other applications running in the system.
1004      */
1005     public static void putJava2IANAMapping(String javaEncoding, 
1006                                            String ianaEncoding) {
1007         fJava2IANAMap.put(javaEncoding, ianaEncoding);
1008     } // putJava2IANAMapping(String,String)
1009 
1010     /**
1011      * Returns the IANA encoding name for the specified Java encoding name.
1012      * 
1013      * @param javaEncoding The Java encoding name.
1014      */
1015     public static String getJava2IANAMapping(String javaEncoding) {
1016         return (String)fJava2IANAMap.get(javaEncoding);
1017     } // getJava2IANAMapping(String):String
1018 
1019     /**
1020      * Removes a Java to IANA encoding name mapping.
1021      * 
1022      * @param javaEncoding The Java encoding name.
1023      * 
1024      * @deprecated Use of this method is not recommended. Its
1025      * effect is JVM wide and may cause unforeseen behaviour
1026      * for other applications running in the system.
1027      */
1028     public static String removeJava2IANAMapping(String javaEncoding) {
1029         return (String)fJava2IANAMap.remove(javaEncoding);
1030     } // removeJava2IANAMapping
1031 
1032 } // class EncodingMap