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 org.apache.catalina.util;
19
20 import java.util;
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 <kent@trl.ibm.co.jp>
471 */
472 public class MIME2Java {
473
474 static private Hashtable s_enchash;
475 static private Hashtable s_revhash;
476
477 static {
478 s_enchash = new Hashtable();
479 // <preferred MIME name>, <Java encoding name>
480 s_enchash.put("UTF-8", "UTF8");
481 s_enchash.put("US-ASCII", "8859_1"); // ?
482 s_enchash.put("ISO-8859-1", "8859_1");
483 s_enchash.put("ISO-8859-2", "8859_2");
484 s_enchash.put("ISO-8859-3", "8859_3");
485 s_enchash.put("ISO-8859-4", "8859_4");
486 s_enchash.put("ISO-8859-5", "8859_5");
487 s_enchash.put("ISO-8859-6", "8859_6");
488 s_enchash.put("ISO-8859-7", "8859_7");
489 s_enchash.put("ISO-8859-8", "8859_8");
490 s_enchash.put("ISO-8859-9", "8859_9");
491 s_enchash.put("ISO-2022-JP", "JIS");
492 s_enchash.put("SHIFT_JIS", "SJIS");
493 s_enchash.put("EUC-JP", "EUCJIS");
494 s_enchash.put("GB2312", "GB2312");
495 s_enchash.put("BIG5", "Big5");
496 s_enchash.put("EUC-KR", "KSC5601");
497 s_enchash.put("ISO-2022-KR", "ISO2022KR");
498 s_enchash.put("KOI8-R", "KOI8_R");
499
500 s_enchash.put("EBCDIC-CP-US", "CP037");
501 s_enchash.put("EBCDIC-CP-CA", "CP037");
502 s_enchash.put("EBCDIC-CP-NL", "CP037");
503 s_enchash.put("EBCDIC-CP-DK", "CP277");
504 s_enchash.put("EBCDIC-CP-NO", "CP277");
505 s_enchash.put("EBCDIC-CP-FI", "CP278");
506 s_enchash.put("EBCDIC-CP-SE", "CP278");
507 s_enchash.put("EBCDIC-CP-IT", "CP280");
508 s_enchash.put("EBCDIC-CP-ES", "CP284");
509 s_enchash.put("EBCDIC-CP-GB", "CP285");
510 s_enchash.put("EBCDIC-CP-FR", "CP297");
511 s_enchash.put("EBCDIC-CP-AR1", "CP420");
512 s_enchash.put("EBCDIC-CP-HE", "CP424");
513 s_enchash.put("EBCDIC-CP-CH", "CP500");
514 s_enchash.put("EBCDIC-CP-ROECE", "CP870");
515 s_enchash.put("EBCDIC-CP-YU", "CP870");
516 s_enchash.put("EBCDIC-CP-IS", "CP871");
517 s_enchash.put("EBCDIC-CP-AR2", "CP918");
518
519 // j:CNS11643 -> EUC-TW?
520 // ISO-2022-CN? ISO-2022-CN-EXT?
521
522 s_revhash = new Hashtable();
523 // <Java encoding name>, <preferred MIME name>
524 s_revhash.put("UTF8", "UTF-8");
525 //s_revhash.put("8859_1", "US-ASCII"); // ?
526 s_revhash.put("8859_1", "ISO-8859-1");
527 s_revhash.put("8859_2", "ISO-8859-2");
528 s_revhash.put("8859_3", "ISO-8859-3");
529 s_revhash.put("8859_4", "ISO-8859-4");
530 s_revhash.put("8859_5", "ISO-8859-5");
531 s_revhash.put("8859_6", "ISO-8859-6");
532 s_revhash.put("8859_7", "ISO-8859-7");
533 s_revhash.put("8859_8", "ISO-8859-8");
534 s_revhash.put("8859_9", "ISO-8859-9");
535 s_revhash.put("JIS", "ISO-2022-JP");
536 s_revhash.put("SJIS", "Shift_JIS");
537 s_revhash.put("EUCJIS", "EUC-JP");
538 s_revhash.put("GB2312", "GB2312");
539 s_revhash.put("BIG5", "Big5");
540 s_revhash.put("KSC5601", "EUC-KR");
541 s_revhash.put("ISO2022KR", "ISO-2022-KR");
542 s_revhash.put("KOI8_R", "KOI8-R");
543
544 s_revhash.put("CP037", "EBCDIC-CP-US");
545 s_revhash.put("CP037", "EBCDIC-CP-CA");
546 s_revhash.put("CP037", "EBCDIC-CP-NL");
547 s_revhash.put("CP277", "EBCDIC-CP-DK");
548 s_revhash.put("CP277", "EBCDIC-CP-NO");
549 s_revhash.put("CP278", "EBCDIC-CP-FI");
550 s_revhash.put("CP278", "EBCDIC-CP-SE");
551 s_revhash.put("CP280", "EBCDIC-CP-IT");
552 s_revhash.put("CP284", "EBCDIC-CP-ES");
553 s_revhash.put("CP285", "EBCDIC-CP-GB");
554 s_revhash.put("CP297", "EBCDIC-CP-FR");
555 s_revhash.put("CP420", "EBCDIC-CP-AR1");
556 s_revhash.put("CP424", "EBCDIC-CP-HE");
557 s_revhash.put("CP500", "EBCDIC-CP-CH");
558 s_revhash.put("CP870", "EBCDIC-CP-ROECE");
559 s_revhash.put("CP870", "EBCDIC-CP-YU");
560 s_revhash.put("CP871", "EBCDIC-CP-IS");
561 s_revhash.put("CP918", "EBCDIC-CP-AR2");
562 }
563
564 private MIME2Java() {
565 }
566
567 /**
568 * Convert a MIME charset name, also known as an XML encoding name, to a Java encoding name.
569 * @param mimeCharsetName Case insensitive MIME charset name: <code>UTF-8, US-ASCII, ISO-8859-1,
570 * ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6,
571 * ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-2022-JP, Shift_JIS,
572 * EUC-JP, GB2312, Big5, EUC-KR, ISO-2022-KR, KOI8-R,
573 * EBCDIC-CP-US, EBCDIC-CP-CA, EBCDIC-CP-NL, EBCDIC-CP-DK,
574 * EBCDIC-CP-NO, EBCDIC-CP-FI, EBCDIC-CP-SE, EBCDIC-CP-IT,
575 * EBCDIC-CP-ES, EBCDIC-CP-GB, EBCDIC-CP-FR, EBCDIC-CP-AR1,
576 * EBCDIC-CP-HE, EBCDIC-CP-CH, EBCDIC-CP-ROECE, EBCDIC-CP-YU,
577 * EBCDIC-CP-IS and EBCDIC-CP-AR2</code>.
578 * @return Java encoding name, or <var>null</var> if <var>mimeCharsetName</var>
579 * is unknown.
580 * @see #reverse
581 */
582 public static String convert(String mimeCharsetName) {
583 return (String)s_enchash.get(mimeCharsetName.toUpperCase());
584 }
585
586 /**
587 * Convert a Java encoding name to MIME charset name.
588 * Available values of <i>encoding</i> are "UTF8", "8859_1", "8859_2", "8859_3", "8859_4",
589 * "8859_5", "8859_6", "8859_7", "8859_8", "8859_9", "JIS", "SJIS", "EUCJIS",
590 * "GB2312", "BIG5", "KSC5601", "ISO2022KR", "KOI8_R", "CP037", "CP277", "CP278",
591 * "CP280", "CP284", "CP285", "CP297", "CP420", "CP424", "CP500", "CP870", "CP871" and "CP918".
592 * @param encoding Case insensitive Java encoding name: <code>UTF8, 8859_1, 8859_2, 8859_3,
593 * 8859_4, 8859_5, 8859_6, 8859_7, 8859_8, 8859_9, JIS, SJIS, EUCJIS,
594 * GB2312, BIG5, KSC5601, ISO2022KR, KOI8_R, CP037, CP277, CP278,
595 * CP280, CP284, CP285, CP297, CP420, CP424, CP500, CP870, CP871
596 * and CP918</code>.
597 * @return MIME charset name, or <var>null</var> if <var>encoding</var> is unknown.
598 * @see #convert
599 */
600 public static String reverse(String encoding) {
601 return (String)s_revhash.get(encoding.toUpperCase());
602 }
603 }