Remove the redundant gss top-level directory.
[pithos] / src / gr / ebs / gss / server / webdav / MIME2Java.java
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 package gr.ebs.gss.server.webdav;
19
20 import java.util.Hashtable;
21
22 /**
23  * MIME2Java is a convenience class which handles conversions between MIME charset names
24  * and Java encoding names.
25  * <p>The supported XML encodings are the intersection of XML-supported code sets and those
26  * supported in JDK 1.1.
27  * <p>MIME charset names are used on <var>xmlEncoding</var> parameters to methods such
28  * as <code>TXDocument#setEncoding</code> and <code>DTD#setEncoding</code>.
29  * <p>Java encoding names are used on <var>encoding</var> parameters to
30  * methods such as <code>TXDocument#printWithFormat</code> and <code>DTD#printExternal</code>.
31  * <P>
32  * <TABLE BORDER="0" WIDTH="100%">
33  *  <TR>
34  *      <TD WIDTH="33%">
35  *          <P ALIGN="CENTER"><B>Common Name</B>
36  *      </TD>
37  *      <TD WIDTH="15%">
38  *          <P ALIGN="CENTER"><B>Use this name in XML files</B>
39  *      </TD>
40  *      <TD WIDTH="12%">
41  *          <P ALIGN="CENTER"><B>Name Type</B>
42  *      </TD>
43  *      <TD WIDTH="31%">
44  *          <P ALIGN="CENTER"><B>Xerces converts to this Java Encoder Name</B>
45  *      </TD>
46  *  </TR>
47  *  <TR>
48  *      <TD WIDTH="33%">8 bit Unicode</TD>
49  *      <TD WIDTH="15%">
50  *          <P ALIGN="CENTER">UTF-8
51  *      </TD>
52  *      <TD WIDTH="12%">
53  *          <P ALIGN="CENTER">IANA
54  *      </TD>
55  *      <TD WIDTH="31%">
56  *          <P ALIGN="CENTER">UTF8
57  *      </TD>
58  *  </TR>
59  *  <TR>
60  *      <TD WIDTH="33%">ISO Latin 1</TD>
61  *      <TD WIDTH="15%">
62  *          <P ALIGN="CENTER">ISO-8859-1
63  *      </TD>
64  *      <TD WIDTH="12%">
65  *          <P ALIGN="CENTER">MIME
66  *      </TD>
67  *      <TD WIDTH="31%">
68  *          <P ALIGN="CENTER">ISO-8859-1
69  *      </TD>
70  *  </TR>
71  *  <TR>
72  *      <TD WIDTH="33%">ISO Latin 2</TD>
73  *      <TD WIDTH="15%">
74  *          <P ALIGN="CENTER">ISO-8859-2
75  *      </TD>
76  *      <TD WIDTH="12%">
77  *          <P ALIGN="CENTER">MIME
78  *      </TD>
79  *      <TD WIDTH="31%">
80  *          <P ALIGN="CENTER">ISO-8859-2
81  *      </TD>
82  *  </TR>
83  *  <TR>
84  *      <TD WIDTH="33%">ISO Latin 3</TD>
85  *      <TD WIDTH="15%">
86  *          <P ALIGN="CENTER">ISO-8859-3
87  *      </TD>
88  *      <TD WIDTH="12%">
89  *          <P ALIGN="CENTER">MIME
90  *      </TD>
91  *      <TD WIDTH="31%">
92  *          <P ALIGN="CENTER">ISO-8859-3
93  *      </TD>
94  *  </TR>
95  *  <TR>
96  *      <TD WIDTH="33%">ISO Latin 4</TD>
97  *      <TD WIDTH="15%">
98  *          <P ALIGN="CENTER">ISO-8859-4
99  *      </TD>
100  *      <TD WIDTH="12%">
101  *          <P ALIGN="CENTER">MIME
102  *      </TD>
103  *      <TD WIDTH="31%">
104  *          <P ALIGN="CENTER">ISO-8859-4
105  *      </TD>
106  *  </TR>
107  *  <TR>
108  *      <TD WIDTH="33%">ISO Latin Cyrillic</TD>
109  *      <TD WIDTH="15%">
110  *          <P ALIGN="CENTER">ISO-8859-5
111  *      </TD>
112  *      <TD WIDTH="12%">
113  *          <P ALIGN="CENTER">MIME
114  *      </TD>
115  *      <TD WIDTH="31%">
116  *          <P ALIGN="CENTER">ISO-8859-5
117  *      </TD>
118  *  </TR>
119  *  <TR>
120  *      <TD WIDTH="33%">ISO Latin Arabic</TD>
121  *      <TD WIDTH="15%">
122  *          <P ALIGN="CENTER">ISO-8859-6
123  *      </TD>
124  *      <TD WIDTH="12%">
125  *          <P ALIGN="CENTER">MIME
126  *      </TD>
127  *      <TD WIDTH="31%">
128  *          <P ALIGN="CENTER">ISO-8859-6
129  *      </TD>
130  *  </TR>
131  *  <TR>
132  *      <TD WIDTH="33%">ISO Latin Greek</TD>
133  *      <TD WIDTH="15%">
134  *          <P ALIGN="CENTER">ISO-8859-7
135  *      </TD>
136  *      <TD WIDTH="12%">
137  *          <P ALIGN="CENTER">MIME
138  *      </TD>
139  *      <TD WIDTH="31%">
140  *          <P ALIGN="CENTER">ISO-8859-7
141  *      </TD>
142  *  </TR>
143  *  <TR>
144  *      <TD WIDTH="33%">ISO Latin Hebrew</TD>
145  *      <TD WIDTH="15%">
146  *          <P ALIGN="CENTER">ISO-8859-8
147  *      </TD>
148  *      <TD WIDTH="12%">
149  *          <P ALIGN="CENTER">MIME
150  *      </TD>
151  *      <TD WIDTH="31%">
152  *          <P ALIGN="CENTER">ISO-8859-8
153  *      </TD>
154  *  </TR>
155  *  <TR>
156  *      <TD WIDTH="33%">ISO Latin 5</TD>
157  *      <TD WIDTH="15%">
158  *          <P ALIGN="CENTER">ISO-8859-9
159  *      </TD>
160  *      <TD WIDTH="12%">
161  *          <P ALIGN="CENTER">MIME
162  *      </TD>
163  *      <TD WIDTH="31%">
164  *          <P ALIGN="CENTER">ISO-8859-9
165  *      </TD>
166  *  </TR>
167  *  <TR>
168  *      <TD WIDTH="33%">EBCDIC: US</TD>
169  *      <TD WIDTH="15%">
170  *          <P ALIGN="CENTER">ebcdic-cp-us
171  *      </TD>
172  *      <TD WIDTH="12%">
173  *          <P ALIGN="CENTER">IANA
174  *      </TD>
175  *      <TD WIDTH="31%">
176  *          <P ALIGN="CENTER">cp037
177  *      </TD>
178  *  </TR>
179  *  <TR>
180  *      <TD WIDTH="33%">EBCDIC: Canada</TD>
181  *      <TD WIDTH="15%">
182  *          <P ALIGN="CENTER">ebcdic-cp-ca
183  *      </TD>
184  *      <TD WIDTH="12%">
185  *          <P ALIGN="CENTER">IANA
186  *      </TD>
187  *      <TD WIDTH="31%">
188  *          <P ALIGN="CENTER">cp037
189  *      </TD>
190  *  </TR>
191  *  <TR>
192  *      <TD WIDTH="33%">EBCDIC: Netherlands</TD>
193  *      <TD WIDTH="15%">
194  *          <P ALIGN="CENTER">ebcdic-cp-nl
195  *      </TD>
196  *      <TD WIDTH="12%">
197  *          <P ALIGN="CENTER">IANA
198  *      </TD>
199  *      <TD WIDTH="31%">
200  *          <P ALIGN="CENTER">cp037
201  *      </TD>
202  *  </TR>
203  *  <TR>
204  *      <TD WIDTH="33%">EBCDIC: Denmark</TD>
205  *      <TD WIDTH="15%">
206  *          <P ALIGN="CENTER">ebcdic-cp-dk
207  *      </TD>
208  *      <TD WIDTH="12%">
209  *          <P ALIGN="CENTER">IANA
210  *      </TD>
211  *      <TD WIDTH="31%">
212  *          <P ALIGN="CENTER">cp277
213  *      </TD>
214  *  </TR>
215  *  <TR>
216  *      <TD WIDTH="33%">EBCDIC: Norway</TD>
217  *      <TD WIDTH="15%">
218  *          <P ALIGN="CENTER">ebcdic-cp-no
219  *      </TD>
220  *      <TD WIDTH="12%">
221  *          <P ALIGN="CENTER">IANA
222  *      </TD>
223  *      <TD WIDTH="31%">
224  *          <P ALIGN="CENTER">cp277
225  *      </TD>
226  *  </TR>
227  *  <TR>
228  *      <TD WIDTH="33%">EBCDIC: Finland</TD>
229  *      <TD WIDTH="15%">
230  *          <P ALIGN="CENTER">ebcdic-cp-fi
231  *      </TD>
232  *      <TD WIDTH="12%">
233  *          <P ALIGN="CENTER">IANA
234  *      </TD>
235  *      <TD WIDTH="31%">
236  *          <P ALIGN="CENTER">cp278
237  *      </TD>
238  *  </TR>
239  *  <TR>
240  *      <TD WIDTH="33%">EBCDIC: Sweden</TD>
241  *      <TD WIDTH="15%">
242  *          <P ALIGN="CENTER">ebcdic-cp-se
243  *      </TD>
244  *      <TD WIDTH="12%">
245  *          <P ALIGN="CENTER">IANA
246  *      </TD>
247  *      <TD WIDTH="31%">
248  *          <P ALIGN="CENTER">cp278
249  *      </TD>
250  *  </TR>
251  *  <TR>
252  *      <TD WIDTH="33%">EBCDIC: Italy</TD>
253  *      <TD WIDTH="15%">
254  *          <P ALIGN="CENTER">ebcdic-cp-it
255  *      </TD>
256  *      <TD WIDTH="12%">
257  *          <P ALIGN="CENTER">IANA
258  *      </TD>
259  *      <TD WIDTH="31%">
260  *          <P ALIGN="CENTER">cp280
261  *      </TD>
262  *  </TR>
263  *  <TR>
264  *      <TD WIDTH="33%">EBCDIC: Spain, Latin America</TD>
265  *      <TD WIDTH="15%">
266  *          <P ALIGN="CENTER">ebcdic-cp-es
267  *      </TD>
268  *      <TD WIDTH="12%">
269  *          <P ALIGN="CENTER">IANA
270  *      </TD>
271  *      <TD WIDTH="31%">
272  *          <P ALIGN="CENTER">cp284
273  *      </TD>
274  *  </TR>
275  *  <TR>
276  *      <TD WIDTH="33%">EBCDIC: Great Britain</TD>
277  *      <TD WIDTH="15%">
278  *          <P ALIGN="CENTER">ebcdic-cp-gb
279  *      </TD>
280  *      <TD WIDTH="12%">
281  *          <P ALIGN="CENTER">IANA
282  *      </TD>
283  *      <TD WIDTH="31%">
284  *          <P ALIGN="CENTER">cp285
285  *      </TD>
286  *  </TR>
287  *  <TR>
288  *      <TD WIDTH="33%">EBCDIC: France</TD>
289  *      <TD WIDTH="15%">
290  *          <P ALIGN="CENTER">ebcdic-cp-fr
291  *      </TD>
292  *      <TD WIDTH="12%">
293  *          <P ALIGN="CENTER">IANA
294  *      </TD>
295  *      <TD WIDTH="31%">
296  *          <P ALIGN="CENTER">cp297
297  *      </TD>
298  *  </TR>
299  *  <TR>
300  *      <TD WIDTH="33%">EBCDIC: Arabic</TD>
301  *      <TD WIDTH="15%">
302  *          <P ALIGN="CENTER">ebcdic-cp-ar1
303  *      </TD>
304  *      <TD WIDTH="12%">
305  *          <P ALIGN="CENTER">IANA
306  *      </TD>
307  *      <TD WIDTH="31%">
308  *          <P ALIGN="CENTER">cp420
309  *      </TD>
310  *  </TR>
311  *  <TR>
312  *      <TD WIDTH="33%">EBCDIC: Hebrew</TD>
313  *      <TD WIDTH="15%">
314  *          <P ALIGN="CENTER">ebcdic-cp-he
315  *      </TD>
316  *      <TD WIDTH="12%">
317  *          <P ALIGN="CENTER">IANA
318  *      </TD>
319  *      <TD WIDTH="31%">
320  *          <P ALIGN="CENTER">cp424
321  *      </TD>
322  *  </TR>
323  *  <TR>
324  *      <TD WIDTH="33%">EBCDIC: Switzerland</TD>
325  *      <TD WIDTH="15%">
326  *          <P ALIGN="CENTER">ebcdic-cp-ch
327  *      </TD>
328  *      <TD WIDTH="12%">
329  *          <P ALIGN="CENTER">IANA
330  *      </TD>
331  *      <TD WIDTH="31%">
332  *          <P ALIGN="CENTER">cp500
333  *      </TD>
334  *  </TR>
335  *  <TR>
336  *      <TD WIDTH="33%">EBCDIC: Roece</TD>
337  *      <TD WIDTH="15%">
338  *          <P ALIGN="CENTER">ebcdic-cp-roece
339  *      </TD>
340  *      <TD WIDTH="12%">
341  *          <P ALIGN="CENTER">IANA
342  *      </TD>
343  *      <TD WIDTH="31%">
344  *          <P ALIGN="CENTER">cp870
345  *      </TD>
346  *  </TR>
347  *  <TR>
348  *      <TD WIDTH="33%">EBCDIC: Yogoslavia</TD>
349  *      <TD WIDTH="15%">
350  *          <P ALIGN="CENTER">ebcdic-cp-yu
351  *      </TD>
352  *      <TD WIDTH="12%">
353  *          <P ALIGN="CENTER">IANA
354  *      </TD>
355  *      <TD WIDTH="31%">
356  *          <P ALIGN="CENTER">cp870
357  *      </TD>
358  *  </TR>
359  *  <TR>
360  *      <TD WIDTH="33%">EBCDIC: Iceland</TD>
361  *      <TD WIDTH="15%">
362  *          <P ALIGN="CENTER">ebcdic-cp-is
363  *      </TD>
364  *      <TD WIDTH="12%">
365  *          <P ALIGN="CENTER">IANA
366  *      </TD>
367  *      <TD WIDTH="31%">
368  *          <P ALIGN="CENTER">cp871
369  *      </TD>
370  *  </TR>
371  *  <TR>
372  *      <TD WIDTH="33%">EBCDIC: Urdu</TD>
373  *      <TD WIDTH="15%">
374  *          <P ALIGN="CENTER">ebcdic-cp-ar2
375  *      </TD>
376  *      <TD WIDTH="12%">
377  *          <P ALIGN="CENTER">IANA
378  *      </TD>
379  *      <TD WIDTH="31%">
380  *          <P ALIGN="CENTER">cp918
381  *      </TD>
382  *  </TR>
383  *  <TR>
384  *      <TD WIDTH="33%">Chinese for PRC, mixed 1/2 byte</TD>
385  *      <TD WIDTH="15%">
386  *          <P ALIGN="CENTER">gb2312
387  *      </TD>
388  *      <TD WIDTH="12%">
389  *          <P ALIGN="CENTER">MIME
390  *      </TD>
391  *      <TD WIDTH="31%">
392  *          <P ALIGN="CENTER">GB2312
393  *      </TD>
394  *  </TR>
395  *  <TR>
396  *      <TD WIDTH="33%">Extended Unix Code, packed for Japanese</TD>
397  *      <TD WIDTH="15%">
398  *          <P ALIGN="CENTER">euc-jp
399  *      </TD>
400  *      <TD WIDTH="12%">
401  *          <P ALIGN="CENTER">MIME
402  *      </TD>
403  *      <TD WIDTH="31%">
404  *          <P ALIGN="CENTER">eucjis
405  *      </TD>
406  *  </TR>
407  *  <TR>
408  *      <TD WIDTH="33%">Japanese: iso-2022-jp</TD>
409  *      <TD WIDTH="15%">
410  *          <P ALIGN="CENTER">iso-2020-jp
411  *      </TD>
412  *      <TD WIDTH="12%">
413  *          <P ALIGN="CENTER">MIME
414  *      </TD>
415  *      <TD WIDTH="31%">
416  *          <P ALIGN="CENTER">JIS
417  *      </TD>
418  *  </TR>
419  *  <TR>
420  *      <TD WIDTH="33%">Japanese: Shift JIS</TD>
421  *      <TD WIDTH="15%">
422  *          <P ALIGN="CENTER">Shift_JIS
423  *      </TD>
424  *      <TD WIDTH="12%">
425  *          <P ALIGN="CENTER">MIME
426  *      </TD>
427  *      <TD WIDTH="31%">
428  *          <P ALIGN="CENTER">SJIS
429  *      </TD>
430  *  </TR>
431  *  <TR>
432  *      <TD WIDTH="33%">Chinese: Big5</TD>
433  *      <TD WIDTH="15%">
434  *          <P ALIGN="CENTER">Big5
435  *      </TD>
436  *      <TD WIDTH="12%">
437  *          <P ALIGN="CENTER">MIME
438  *      </TD>
439  *      <TD WIDTH="31%">
440  *          <P ALIGN="CENTER">Big5
441  *      </TD>
442  *  </TR>
443  *  <TR>
444  *      <TD WIDTH="33%">Extended Unix Code, packed for Korean</TD>
445  *      <TD WIDTH="15%">
446  *          <P ALIGN="CENTER">euc-kr
447  *      </TD>
448  *      <TD WIDTH="12%">
449  *          <P ALIGN="CENTER">MIME
450  *      </TD>
451  *      <TD WIDTH="31%">
452  *          <P ALIGN="CENTER">iso2022kr
453  *      </TD>
454  *  </TR>
455  *  <TR>
456  *      <TD WIDTH="33%">Cyrillic</TD>
457  *      <TD WIDTH="15%">
458  *          <P ALIGN="CENTER">koi8-r
459  *      </TD>
460  *      <TD WIDTH="12%">
461  *          <P ALIGN="CENTER">MIME
462  *      </TD>
463  *      <TD WIDTH="31%">
464  *          <P ALIGN="CENTER">koi8-r
465  *      </TD>
466  *  </TR>
467  * </TABLE>
468  *
469  * @version $Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $
470  * @author TAMURA Kent &lt;kent@trl.ibm.co.jp&gt;
471  */
472 public class MIME2Java {
473
474         /**
475          *
476          */
477         static private Hashtable s_enchash;
478         /**
479          *
480          */
481         static private Hashtable s_revhash;
482
483         static {
484                 s_enchash = new Hashtable();
485                 //    <preferred MIME name>, <Java encoding name>
486                 s_enchash.put("UTF-8", "UTF8");
487                 s_enchash.put("US-ASCII",        "8859_1");    // ?
488                 s_enchash.put("ISO-8859-1",      "8859_1");
489                 s_enchash.put("ISO-8859-2",      "8859_2");
490                 s_enchash.put("ISO-8859-3",      "8859_3");
491                 s_enchash.put("ISO-8859-4",      "8859_4");
492                 s_enchash.put("ISO-8859-5",      "8859_5");
493                 s_enchash.put("ISO-8859-6",      "8859_6");
494                 s_enchash.put("ISO-8859-7",      "8859_7");
495                 s_enchash.put("ISO-8859-8",      "8859_8");
496                 s_enchash.put("ISO-8859-9",      "8859_9");
497                 s_enchash.put("ISO-2022-JP",     "JIS");
498                 s_enchash.put("SHIFT_JIS",       "SJIS");
499                 s_enchash.put("EUC-JP",          "EUCJIS");
500                 s_enchash.put("GB2312",          "GB2312");
501                 s_enchash.put("BIG5",            "Big5");
502                 s_enchash.put("EUC-KR",          "KSC5601");
503                 s_enchash.put("ISO-2022-KR",     "ISO2022KR");
504                 s_enchash.put("KOI8-R",          "KOI8_R");
505
506                 s_enchash.put("EBCDIC-CP-US",    "CP037");
507                 s_enchash.put("EBCDIC-CP-CA",    "CP037");
508                 s_enchash.put("EBCDIC-CP-NL",    "CP037");
509                 s_enchash.put("EBCDIC-CP-DK",    "CP277");
510                 s_enchash.put("EBCDIC-CP-NO",    "CP277");
511                 s_enchash.put("EBCDIC-CP-FI",    "CP278");
512                 s_enchash.put("EBCDIC-CP-SE",    "CP278");
513                 s_enchash.put("EBCDIC-CP-IT",    "CP280");
514                 s_enchash.put("EBCDIC-CP-ES",    "CP284");
515                 s_enchash.put("EBCDIC-CP-GB",    "CP285");
516                 s_enchash.put("EBCDIC-CP-FR",    "CP297");
517                 s_enchash.put("EBCDIC-CP-AR1",   "CP420");
518                 s_enchash.put("EBCDIC-CP-HE",    "CP424");
519                 s_enchash.put("EBCDIC-CP-CH",    "CP500");
520                 s_enchash.put("EBCDIC-CP-ROECE", "CP870");
521                 s_enchash.put("EBCDIC-CP-YU",    "CP870");
522                 s_enchash.put("EBCDIC-CP-IS",    "CP871");
523                 s_enchash.put("EBCDIC-CP-AR2",   "CP918");
524
525                 // j:CNS11643 -> EUC-TW?
526                 // ISO-2022-CN? ISO-2022-CN-EXT?
527
528                 s_revhash = new Hashtable();
529                 //    <Java encoding name>, <preferred MIME name>
530                 s_revhash.put("UTF8", "UTF-8");
531                 //s_revhash.put("8859_1", "US-ASCII");    // ?
532                 s_revhash.put("8859_1", "ISO-8859-1");
533                 s_revhash.put("8859_2", "ISO-8859-2");
534                 s_revhash.put("8859_3", "ISO-8859-3");
535                 s_revhash.put("8859_4", "ISO-8859-4");
536                 s_revhash.put("8859_5", "ISO-8859-5");
537                 s_revhash.put("8859_6", "ISO-8859-6");
538                 s_revhash.put("8859_7", "ISO-8859-7");
539                 s_revhash.put("8859_8", "ISO-8859-8");
540                 s_revhash.put("8859_9", "ISO-8859-9");
541                 s_revhash.put("JIS", "ISO-2022-JP");
542                 s_revhash.put("SJIS", "Shift_JIS");
543                 s_revhash.put("EUCJIS", "EUC-JP");
544                 s_revhash.put("GB2312", "GB2312");
545                 s_revhash.put("BIG5", "Big5");
546                 s_revhash.put("KSC5601", "EUC-KR");
547                 s_revhash.put("ISO2022KR", "ISO-2022-KR");
548                 s_revhash.put("KOI8_R", "KOI8-R");
549
550                 s_revhash.put("CP037", "EBCDIC-CP-US");
551                 s_revhash.put("CP037", "EBCDIC-CP-CA");
552                 s_revhash.put("CP037", "EBCDIC-CP-NL");
553                 s_revhash.put("CP277", "EBCDIC-CP-DK");
554                 s_revhash.put("CP277", "EBCDIC-CP-NO");
555                 s_revhash.put("CP278", "EBCDIC-CP-FI");
556                 s_revhash.put("CP278", "EBCDIC-CP-SE");
557                 s_revhash.put("CP280", "EBCDIC-CP-IT");
558                 s_revhash.put("CP284", "EBCDIC-CP-ES");
559                 s_revhash.put("CP285", "EBCDIC-CP-GB");
560                 s_revhash.put("CP297", "EBCDIC-CP-FR");
561                 s_revhash.put("CP420", "EBCDIC-CP-AR1");
562                 s_revhash.put("CP424", "EBCDIC-CP-HE");
563                 s_revhash.put("CP500", "EBCDIC-CP-CH");
564                 s_revhash.put("CP870", "EBCDIC-CP-ROECE");
565                 s_revhash.put("CP870", "EBCDIC-CP-YU");
566                 s_revhash.put("CP871", "EBCDIC-CP-IS");
567                 s_revhash.put("CP918", "EBCDIC-CP-AR2");
568         }
569
570         /**
571          * Constructor.
572          */
573         private MIME2Java() {
574         }
575
576         /**
577          * Convert a MIME charset name, also known as an XML encoding name, to a Java encoding name.
578          * @param   mimeCharsetName Case insensitive MIME charset name: <code>UTF-8, US-ASCII, ISO-8859-1,
579          *                          ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6,
580          *                          ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-2022-JP, Shift_JIS,
581          *                          EUC-JP, GB2312, Big5, EUC-KR, ISO-2022-KR, KOI8-R,
582          *                          EBCDIC-CP-US, EBCDIC-CP-CA, EBCDIC-CP-NL, EBCDIC-CP-DK,
583          *                          EBCDIC-CP-NO, EBCDIC-CP-FI, EBCDIC-CP-SE, EBCDIC-CP-IT,
584          *                          EBCDIC-CP-ES, EBCDIC-CP-GB, EBCDIC-CP-FR, EBCDIC-CP-AR1,
585          *                          EBCDIC-CP-HE, EBCDIC-CP-CH, EBCDIC-CP-ROECE, EBCDIC-CP-YU,
586          *                          EBCDIC-CP-IS and EBCDIC-CP-AR2</code>.
587          * @return                  Java encoding name, or <var>null</var> if <var>mimeCharsetName</var>
588          *                          is unknown.
589          * @see #reverse
590          */
591         public static String convert(String mimeCharsetName) {
592                 return (String)s_enchash.get(mimeCharsetName.toUpperCase());
593         }
594
595         /**
596          * Convert a Java encoding name to MIME charset name.
597          * Available values of <i>encoding</i> are "UTF8", "8859_1", "8859_2", "8859_3", "8859_4",
598          * "8859_5", "8859_6", "8859_7", "8859_8", "8859_9", "JIS", "SJIS", "EUCJIS",
599          * "GB2312", "BIG5", "KSC5601", "ISO2022KR",  "KOI8_R", "CP037", "CP277", "CP278",
600          * "CP280", "CP284", "CP285", "CP297", "CP420", "CP424", "CP500", "CP870", "CP871" and "CP918".
601          * @param   encoding    Case insensitive Java encoding name: <code>UTF8, 8859_1, 8859_2, 8859_3,
602          *                      8859_4, 8859_5, 8859_6, 8859_7, 8859_8, 8859_9, JIS, SJIS, EUCJIS,
603          *                      GB2312, BIG5, KSC5601, ISO2022KR, KOI8_R, CP037, CP277, CP278,
604          *                      CP280, CP284, CP285, CP297, CP420, CP424, CP500, CP870, CP871
605          *                      and CP918</code>.
606          * @return              MIME charset name, or <var>null</var> if <var>encoding</var> is unknown.
607          * @see #convert
608          */
609         public static String reverse(String encoding) {
610                 return (String)s_revhash.get(encoding.toUpperCase());
611         }
612 }