Utility class for working with character sets : Encoding « I18N « Java

Java
1. 2D Graphics GUI
2. 3D
3. Advanced Graphics
4. Ant
5. Apache Common
6. Chart
7. Class
8. Collections Data Structure
9. Data Type
10. Database SQL JDBC
11. Design Pattern
12. Development Class
13. EJB3
14. Email
15. Event
16. File Input Output
17. Game
18. Generics
19. GWT
20. Hibernate
21. I18N
22. J2EE
23. J2ME
24. JDK 6
25. JNDI LDAP
26. JPA
27. JSP
28. JSTL
29. Language Basics
30. Network Protocol
31. PDF RTF
32. Reflection
33. Regular Expressions
34. Scripting
35. Security
36. Servlets
37. Spring
38. Swing Components
39. Swing JFC
40. SWT JFace Eclipse
41. Threads
42. Tiny Application
43. Velocity
44. Web Services SOA
45. XML
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java » I18N » EncodingScreenshots 
Utility class for working with character sets
  



import java.io.UnsupportedEncodingException;
import java.nio.charset.IllegalCharsetNameException;
import java.nio.charset.UnsupportedCharsetException;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;


/**
 * Utility class for working with character sets. It is somewhat similar to
 * the Java 1.4 <code>java.nio.charset.Charset</code> class but knows many
 * more aliases and is compatible with Java 1.3. It will use a simple detection
 * mechanism to detect what character sets the current VM supports. This will
 * be a sub-set of the character sets listed in the
 * <a href="http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html">
 * Java 1.5 (J2SE5.0) Supported Encodings</a> document.
 * <p>
 * The <a href="http://www.iana.org/assignments/character-sets">
 * IANA Character Sets</a> document has been used to determine the preferred
 * MIME character set names and to get a list of known aliases.
 * <p>
 * This is a complete list of the character sets known to this class:
 * <table>
 *     <tr>
 *         <td>Canonical (Java) name</td>
 *         <td>MIME preferred</td>
 *         <td>Aliases</td>
 *     </tr>
 *     <tr>
 *         <td>ASCII</td>
 *         <td>US-ASCII</td>
 *         <td>ANSI_X3.4-1968 iso-ir-6 ANSI_X3.4-1986 ISO_646.irv:1991 ISO646-US us IBM367 cp367 csASCII ascii7 646 iso_646.irv:1983 </td>
 *     </tr>
 *     <tr>
 *         <td>Big5</td>
 *         <td>Big5</td>
 *         <td>csBig5 CN-Big5 BIG-FIVE BIGFIVE </td>
 *     </tr>
 *     <tr>
 *         <td>Big5_HKSCS</td>
 *         <td>Big5-HKSCS</td>
 *         <td>big5hkscs </td>
 *     </tr>
 *     <tr>
 *         <td>Big5_Solaris</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp037</td>
 *         <td>IBM037</td>
 *         <td>ebcdic-cp-us ebcdic-cp-ca ebcdic-cp-wt ebcdic-cp-nl csIBM037 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1006</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1025</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1026</td>
 *         <td>IBM1026</td>
 *         <td>csIBM1026 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1046</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1047</td>
 *         <td>IBM1047</td>
 *         <td>IBM-1047 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1097</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1098</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1112</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1122</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1123</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1124</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1140</td>
 *         <td>IBM01140</td>
 *         <td>CCSID01140 CP01140 ebcdic-us-37+euro </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1141</td>
 *         <td>IBM01141</td>
 *         <td>CCSID01141 CP01141 ebcdic-de-273+euro </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1142</td>
 *         <td>IBM01142</td>
 *         <td>CCSID01142 CP01142 ebcdic-dk-277+euro ebcdic-no-277+euro </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1143</td>
 *         <td>IBM01143</td>
 *         <td>CCSID01143 CP01143 ebcdic-fi-278+euro ebcdic-se-278+euro </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1144</td>
 *         <td>IBM01144</td>
 *         <td>CCSID01144 CP01144 ebcdic-it-280+euro </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1145</td>
 *         <td>IBM01145</td>
 *         <td>CCSID01145 CP01145 ebcdic-es-284+euro </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1146</td>
 *         <td>IBM01146</td>
 *         <td>CCSID01146 CP01146 ebcdic-gb-285+euro </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1147</td>
 *         <td>IBM01147</td>
 *         <td>CCSID01147 CP01147 ebcdic-fr-297+euro </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1148</td>
 *         <td>IBM01148</td>
 *         <td>CCSID01148 CP01148 ebcdic-international-500+euro </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1149</td>
 *         <td>IBM01149</td>
 *         <td>CCSID01149 CP01149 ebcdic-is-871+euro </td>
 *     </tr>
 *     <tr>
 *         <td>Cp1250</td>
 *         <td>windows-1250</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1251</td>
 *         <td>windows-1251</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1252</td>
 *         <td>windows-1252</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1253</td>
 *         <td>windows-1253</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1254</td>
 *         <td>windows-1254</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1255</td>
 *         <td>windows-1255</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1256</td>
 *         <td>windows-1256</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1257</td>
 *         <td>windows-1257</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1258</td>
 *         <td>windows-1258</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1381</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp1383</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp273</td>
 *         <td>IBM273</td>
 *         <td>csIBM273 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp277</td>
 *         <td>IBM277</td>
 *         <td>EBCDIC-CP-DK EBCDIC-CP-NO csIBM277 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp278</td>
 *         <td>IBM278</td>
 *         <td>CP278 ebcdic-cp-fi ebcdic-cp-se csIBM278 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp280</td>
 *         <td>IBM280</td>
 *         <td>ebcdic-cp-it csIBM280 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp284</td>
 *         <td>IBM284</td>
 *         <td>ebcdic-cp-es csIBM284 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp285</td>
 *         <td>IBM285</td>
 *         <td>ebcdic-cp-gb csIBM285 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp297</td>
 *         <td>IBM297</td>
 *         <td>ebcdic-cp-fr csIBM297 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp33722</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp420</td>
 *         <td>IBM420</td>
 *         <td>ebcdic-cp-ar1 csIBM420 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp424</td>
 *         <td>IBM424</td>
 *         <td>ebcdic-cp-he csIBM424 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp437</td>
 *         <td>IBM437</td>
 *         <td>437 csPC8CodePage437 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp500</td>
 *         <td>IBM500</td>
 *         <td>ebcdic-cp-be ebcdic-cp-ch csIBM500 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp737</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp775</td>
 *         <td>IBM775</td>
 *         <td>csPC775Baltic </td>
 *     </tr>
 *     <tr>
 *         <td>Cp838</td>
 *         <td>IBM-Thai</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp850</td>
 *         <td>IBM850</td>
 *         <td>850 csPC850Multilingual </td>
 *     </tr>
 *     <tr>
 *         <td>Cp852</td>
 *         <td>IBM852</td>
 *         <td>852 csPCp852 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp855</td>
 *         <td>IBM855</td>
 *         <td>855 csIBM855 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp856</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp857</td>
 *         <td>IBM857</td>
 *         <td>857 csIBM857 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp858</td>
 *         <td>IBM00858</td>
 *         <td>CCSID00858 CP00858 PC-Multilingual-850+euro </td>
 *     </tr>
 *     <tr>
 *         <td>Cp860</td>
 *         <td>IBM860</td>
 *         <td>860 csIBM860 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp861</td>
 *         <td>IBM861</td>
 *         <td>861 cp-is csIBM861 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp862</td>
 *         <td>IBM862</td>
 *         <td>862 csPC862LatinHebrew </td>
 *     </tr>
 *     <tr>
 *         <td>Cp863</td>
 *         <td>IBM863</td>
 *         <td>863 csIBM863 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp864</td>
 *         <td>IBM864</td>
 *         <td>cp864 csIBM864 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp865</td>
 *         <td>IBM865</td>
 *         <td>865 csIBM865 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp866</td>
 *         <td>IBM866</td>
 *         <td>866 csIBM866 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp868</td>
 *         <td>IBM868</td>
 *         <td>cp-ar csIBM868 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp869</td>
 *         <td>IBM869</td>
 *         <td>cp-gr csIBM869 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp870</td>
 *         <td>IBM870</td>
 *         <td>ebcdic-cp-roece ebcdic-cp-yu csIBM870 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp871</td>
 *         <td>IBM871</td>
 *         <td>ebcdic-cp-is csIBM871 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp875</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp918</td>
 *         <td>IBM918</td>
 *         <td>ebcdic-cp-ar2 csIBM918 </td>
 *     </tr>
 *     <tr>
 *         <td>Cp921</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp922</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp930</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp933</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp935</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp937</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp939</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp942</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp942C</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp943</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp943C</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp948</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp949</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp949C</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp950</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp964</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>Cp970</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>EUC_CN</td>
 *         <td>GB2312</td>
 *         <td>x-EUC-CN csGB2312 euccn euc-cn gb2312-80 gb2312-1980 CN-GB CN-GB-ISOIR165 </td>
 *     </tr>
 *     <tr>
 *         <td>EUC_JP</td>
 *         <td>EUC-JP</td>
 *         <td>csEUCPkdFmtJapanese Extended_UNIX_Code_Packed_Format_for_Japanese eucjis x-eucjp eucjp x-euc-jp </td>
 *     </tr>
 *     <tr>
 *         <td>EUC_JP_LINUX</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>EUC_JP_Solaris</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>EUC_KR</td>
 *         <td>EUC-KR</td>
 *         <td>csEUCKR ksc5601 5601 ksc5601_1987 ksc_5601 ksc5601-1987 ks_c_5601-1987 euckr </td>
 *     </tr>
 *     <tr>
 *         <td>EUC_TW</td>
 *         <td>EUC-TW</td>
 *         <td>x-EUC-TW cns11643 euctw </td>
 *     </tr>
 *     <tr>
 *         <td>GB18030</td>
 *         <td>GB18030</td>
 *         <td>gb18030-2000 </td>
 *     </tr>
 *     <tr>
 *         <td>GBK</td>
 *         <td>windows-936</td>
 *         <td>CP936 MS936 ms_936 x-mswin-936 </td>
 *     </tr>
 *     <tr>
 *         <td>ISCII91</td>
 *         <td>?</td>
 *         <td>x-ISCII91 iscii </td>
 *     </tr>
 *     <tr>
 *         <td>ISO2022CN</td>
 *         <td>ISO-2022-CN</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>ISO2022JP</td>
 *         <td>ISO-2022-JP</td>
 *         <td>csISO2022JP JIS jis_encoding csjisencoding </td>
 *     </tr>
 *     <tr>
 *         <td>ISO2022KR</td>
 *         <td>ISO-2022-KR</td>
 *         <td>csISO2022KR </td>
 *     </tr>
 *     <tr>
 *         <td>ISO2022_CN_CNS</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>ISO2022_CN_GB</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>ISO8859_1</td>
 *         <td>ISO-8859-1</td>
 *         <td>ISO_8859-1:1987 iso-ir-100 ISO_8859-1 latin1 l1 IBM819 CP819 csISOLatin1 8859_1 819 IBM-819 ISO8859-1 ISO_8859_1 </td>
 *     </tr>
 *     <tr>
 *         <td>ISO8859_13</td>
 *         <td>ISO-8859-13</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>ISO8859_15</td>
 *         <td>ISO-8859-15</td>
 *         <td>ISO_8859-15 Latin-9 8859_15 csISOlatin9 IBM923 cp923 923 L9 IBM-923 ISO8859-15 LATIN9 LATIN0 csISOlatin0 ISO8859_15_FDIS </td>
 *     </tr>
 *     <tr>
 *         <td>ISO8859_2</td>
 *         <td>ISO-8859-2</td>
 *         <td>ISO_8859-2:1987 iso-ir-101 ISO_8859-2 latin2 l2 csISOLatin2 8859_2 iso8859_2 </td>
 *     </tr>
 *     <tr>
 *         <td>ISO8859_3</td>
 *         <td>ISO-8859-3</td>
 *         <td>ISO_8859-3:1988 iso-ir-109 ISO_8859-3 latin3 l3 csISOLatin3 8859_3 </td>
 *     </tr>
 *     <tr>
 *         <td>ISO8859_4</td>
 *         <td>ISO-8859-4</td>
 *         <td>ISO_8859-4:1988 iso-ir-110 ISO_8859-4 latin4 l4 csISOLatin4 8859_4 </td>
 *     </tr>
 *     <tr>
 *         <td>ISO8859_5</td>
 *         <td>ISO-8859-5</td>
 *         <td>ISO_8859-5:1988 iso-ir-144 ISO_8859-5 cyrillic csISOLatinCyrillic 8859_5 </td>
 *     </tr>
 *     <tr>
 *         <td>ISO8859_6</td>
 *         <td>ISO-8859-6</td>
 *         <td>ISO_8859-6:1987 iso-ir-127 ISO_8859-6 ECMA-114 ASMO-708 arabic csISOLatinArabic 8859_6 </td>
 *     </tr>
 *     <tr>
 *         <td>ISO8859_7</td>
 *         <td>ISO-8859-7</td>
 *         <td>ISO_8859-7:1987 iso-ir-126 ISO_8859-7 ELOT_928 ECMA-118 greek greek8 csISOLatinGreek 8859_7 sun_eu_greek </td>
 *     </tr>
 *     <tr>
 *         <td>ISO8859_8</td>
 *         <td>ISO-8859-8</td>
 *         <td>ISO_8859-8:1988 iso-ir-138 ISO_8859-8 hebrew csISOLatinHebrew 8859_8 </td>
 *     </tr>
 *     <tr>
 *         <td>ISO8859_9</td>
 *         <td>ISO-8859-9</td>
 *         <td>ISO_8859-9:1989 iso-ir-148 ISO_8859-9 latin5 l5 csISOLatin5 8859_9 </td>
 *     </tr>
 *     <tr>
 *         <td>JISAutoDetect</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>JIS_C6626-1983</td>
 *         <td>JIS_C6626-1983</td>
 *         <td>x-JIS0208 JIS0208 csISO87JISX0208 x0208 JIS_X0208-1983 iso-ir-87 </td>
 *     </tr>
 *     <tr>
 *         <td>JIS_X0201</td>
 *         <td>JIS_X0201</td>
 *         <td>X0201 JIS0201 csHalfWidthKatakana </td>
 *     </tr>
 *     <tr>
 *         <td>JIS_X0212-1990</td>
 *         <td>JIS_X0212-1990</td>
 *         <td>iso-ir-159 x0212 JIS0212 csISO159JISX02121990 </td>
 *     </tr>
 *     <tr>
 *         <td>KOI8_R</td>
 *         <td>KOI8-R</td>
 *         <td>csKOI8R koi8 </td>
 *     </tr>
 *     <tr>
 *         <td>MS874</td>
 *         <td>windows-874</td>
 *         <td>cp874 </td>
 *     </tr>
 *     <tr>
 *         <td>MS932</td>
 *         <td>Windows-31J</td>
 *         <td>windows-932 csWindows31J x-ms-cp932 </td>
 *     </tr>
 *     <tr>
 *         <td>MS949</td>
 *         <td>windows-949</td>
 *         <td>windows949 ms_949 x-windows-949 </td>
 *     </tr>
 *     <tr>
 *         <td>MS950</td>
 *         <td>windows-950</td>
 *         <td>x-windows-950 </td>
 *     </tr>
 *     <tr>
 *         <td>MS950_HKSCS</td>
 *         <td></td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacArabic</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacCentralEurope</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacCroatian</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacCyrillic</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacDingbat</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacGreek</td>
 *         <td>MacGreek</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacHebrew</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacIceland</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacRoman</td>
 *         <td>MacRoman</td>
 *         <td>Macintosh MAC csMacintosh </td>
 *     </tr>
 *     <tr>
 *         <td>MacRomania</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacSymbol</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacThai</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacTurkish</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>MacUkraine</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>SJIS</td>
 *         <td>Shift_JIS</td>
 *         <td>MS_Kanji csShiftJIS shift-jis x-sjis pck </td>
 *     </tr>
 *     <tr>
 *         <td>TIS620</td>
 *         <td>TIS-620</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>UTF-16</td>
 *         <td>UTF-16</td>
 *         <td>UTF_16 </td>
 *     </tr>
 *     <tr>
 *         <td>UTF8</td>
 *         <td>UTF-8</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>UnicodeBig</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>UnicodeBigUnmarked</td>
 *         <td>UTF-16BE</td>
 *         <td>X-UTF-16BE UTF_16BE ISO-10646-UCS-2 </td>
 *     </tr>
 *     <tr>
 *         <td>UnicodeLittle</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 *     <tr>
 *         <td>UnicodeLittleUnmarked</td>
 *         <td>UTF-16LE</td>
 *         <td>UTF_16LE X-UTF-16LE </td>
 *     </tr>
 *     <tr>
 *         <td>x-Johab</td>
 *         <td>johab</td>
 *         <td>johab cp1361 ms1361 ksc5601-1992 ksc5601_1992 </td>
 *     </tr>
 *     <tr>
 *         <td>x-iso-8859-11</td>
 *         <td>?</td>
 *         <td></td>
 *     </tr>
 * </table>
 */
public class CharsetUtil {
    private static class Charset implements Comparable<Charset> {
        private String canonical = null;
        private String mime = null;
        private String[] aliases = null;
        
        private Charset(String canonical, String mime, String[] aliases) {
            this.canonical = canonical;
            this.mime = mime;
            this.aliases = aliases;
        }

        public int compareTo(Charset c) {
            return this.canonical.compareTo(c.canonical);
        }
    }
    
    private static Charset[] JAVA_CHARSETS = {
        new Charset("ISO8859_1""ISO-8859-1"
                    new String[] {"ISO_8859-1:1987""iso-ir-100""ISO_8859-1"
                                  "latin1""l1""IBM819""CP819"
                                  "csISOLatin1""8859_1""819""IBM-819"
                                  "ISO8859-1""ISO_8859_1"}),
        new Charset("ISO8859_2""ISO-8859-2"
                    new String[] {"ISO_8859-2:1987""iso-ir-101""ISO_8859-2",  
                                  "latin2""l2""csISOLatin2""8859_2"
                                  "iso8859_2"}),
        new Charset("ISO8859_3""ISO-8859-3"new String[] {"ISO_8859-3:1988""iso-ir-109""ISO_8859-3""latin3""l3""csISOLatin3""8859_3"}),
        new Charset("ISO8859_4""ISO-8859-4"
                    new String[] {"ISO_8859-4:1988""iso-ir-110""ISO_8859-4",
                                  "latin4""l4""csISOLatin4""8859_4"}),
        new Charset("ISO8859_5""ISO-8859-5"
                    new String[] {"ISO_8859-5:1988""iso-ir-144""ISO_8859-5"
                                  "cyrillic""csISOLatinCyrillic""8859_5"}),
        new Charset("ISO8859_6""ISO-8859-6"new String[] {"ISO_8859-6:1987""iso-ir-127""ISO_8859-6""ECMA-114""ASMO-708""arabic""csISOLatinArabic""8859_6"}),
        new Charset("ISO8859_7""ISO-8859-7"
                    new String[] {"ISO_8859-7:1987""iso-ir-126""ISO_8859-7"
                                  "ELOT_928""ECMA-118""greek""greek8"
                                  "csISOLatinGreek""8859_7""sun_eu_greek"}),
        new Charset("ISO8859_8""ISO-8859-8"new String[] {"ISO_8859-8:1988""iso-ir-138""ISO_8859-8""hebrew""csISOLatinHebrew""8859_8"}),
        new Charset("ISO8859_9""ISO-8859-9"
                    new String[] {"ISO_8859-9:1989""iso-ir-148""ISO_8859-9",  
                                  "latin5""l5""csISOLatin5""8859_9"}),

        new Charset("ISO8859_13""ISO-8859-13"new String[] {}),
        new Charset("ISO8859_15""ISO-8859-15"
                    new String[] {"ISO_8859-15""Latin-9""8859_15"
                                  "csISOlatin9""IBM923""cp923""923""L9",
                                  "IBM-923""ISO8859-15""LATIN9""LATIN0"
                                  "csISOlatin0""ISO8859_15_FDIS"}),
        new Charset("KOI8_R""KOI8-R"new String[] {"csKOI8R""koi8"}),
        new Charset("ASCII""US-ASCII"
                    new String[] {"ANSI_X3.4-1968""iso-ir-6"
                                  "ANSI_X3.4-1986""ISO_646.irv:1991"
                                  "ISO646-US""us""IBM367""cp367"
                                  "csASCII""ascii7""646""iso_646.irv:1983"}),
        new Charset("UTF8""UTF-8"new String[] {}),
        new Charset("UTF-16""UTF-16"new String[] {"UTF_16"}),
        new Charset("UnicodeBigUnmarked""UTF-16BE"new String[] {"X-UTF-16BE""UTF_16BE""ISO-10646-UCS-2"}),
        new Charset("UnicodeLittleUnmarked""UTF-16LE"new String[] {"UTF_16LE""X-UTF-16LE"}),
        new Charset("Big5""Big5"new String[] {"csBig5""CN-Big5""BIG-FIVE""BIGFIVE"}),
        new Charset("Big5_HKSCS""Big5-HKSCS"new String[] {"big5hkscs"}),
        new Charset("EUC_JP""EUC-JP"
                    new String[] {"csEUCPkdFmtJapanese"
                              "Extended_UNIX_Code_Packed_Format_for_Japanese",
                              "eucjis""x-eucjp""eucjp""x-euc-jp"}),
        new Charset("EUC_KR""EUC-KR"
                    new String[] {"csEUCKR""ksc5601""5601""ksc5601_1987"
                                  "ksc_5601""ksc5601-1987""ks_c_5601-1987"
                                  "euckr"}),
        new Charset("GB18030""GB18030"new String[] {"gb18030-2000"}),
        new Charset("EUC_CN""GB2312"new String[] {"x-EUC-CN""csGB2312""euccn""euc-cn""gb2312-80""gb2312-1980""CN-GB""CN-GB-ISOIR165"}),
        new Charset("GBK""windows-936"new String[] {"CP936""MS936""ms_936""x-mswin-936"}),

        new Charset("Cp037""IBM037"new String[] {"ebcdic-cp-us""ebcdic-cp-ca""ebcdic-cp-wt""ebcdic-cp-nl""csIBM037"}),
        new Charset("Cp273""IBM273"new String[] {"csIBM273"}),
        new Charset("Cp277""IBM277"new String[] {"EBCDIC-CP-DK""EBCDIC-CP-NO""csIBM277"}),
        new Charset("Cp278""IBM278"new String[] {"CP278""ebcdic-cp-fi""ebcdic-cp-se""csIBM278"}),
        new Charset("Cp280""IBM280"new String[] {"ebcdic-cp-it""csIBM280"}),
        new Charset("Cp284""IBM284"new String[] {"ebcdic-cp-es""csIBM284"}),
        new Charset("Cp285""IBM285"new String[] {"ebcdic-cp-gb""csIBM285"}),
        new Charset("Cp297""IBM297"new String[] {"ebcdic-cp-fr""csIBM297"}),
        new Charset("Cp420""IBM420"new String[] {"ebcdic-cp-ar1""csIBM420"}),
        new Charset("Cp424""IBM424"new String[] {"ebcdic-cp-he""csIBM424"}),
        new Charset("Cp437""IBM437"new String[] {"437""csPC8CodePage437"}),
        new Charset("Cp500""IBM500"new String[] {"ebcdic-cp-be""ebcdic-cp-ch""csIBM500"}),
        new Charset("Cp775""IBM775"new String[] {"csPC775Baltic"}),
        new Charset("Cp838""IBM-Thai"new String[] {}),
        new Charset("Cp850""IBM850"new String[] {"850""csPC850Multilingual"}),
        new Charset("Cp852""IBM852"new String[] {"852""csPCp852"}),
        new Charset("Cp855""IBM855"new String[] {"855""csIBM855"}),
        new Charset("Cp857""IBM857"new String[] {"857""csIBM857"}),
        new Charset("Cp858""IBM00858"
                new String[] {"CCSID00858""CP00858"
                              "PC-Multilingual-850+euro"}),
        new Charset("Cp860""IBM860"new String[] {"860""csIBM860"}),
        new Charset("Cp861""IBM861"new String[] {"861""cp-is""csIBM861"}),
        new Charset("Cp862""IBM862"new String[] {"862""csPC862LatinHebrew"}),
        new Charset("Cp863""IBM863"new String[] {"863""csIBM863"}),
        new Charset("Cp864""IBM864"new String[] {"cp864""csIBM864"}),
        new Charset("Cp865""IBM865"new String[] {"865""csIBM865"}),
        new Charset("Cp866""IBM866"new String[] {"866""csIBM866"}),
        new Charset("Cp868""IBM868"new String[] {"cp-ar""csIBM868"}),
        new Charset("Cp869""IBM869"new String[] {"cp-gr""csIBM869"}),
        new Charset("Cp870""IBM870"new String[] {"ebcdic-cp-roece""ebcdic-cp-yu""csIBM870"}),
        new Charset("Cp871""IBM871"new String[] {"ebcdic-cp-is""csIBM871"}),
        new Charset("Cp918""IBM918"new String[] {"ebcdic-cp-ar2""csIBM918"}),
        new Charset("Cp1026""IBM1026"new String[] {"csIBM1026"}),
        new Charset("Cp1047""IBM1047"new String[] {"IBM-1047"}),
        new Charset("Cp1140""IBM01140"
                    new String[] {"CCSID01140""CP01140"
                                  "ebcdic-us-37+euro"}),
        new Charset("Cp1141""IBM01141"
                    new String[] {"CCSID01141""CP01141"
                                  "ebcdic-de-273+euro"}),
        new Charset("Cp1142""IBM01142"new String[] {"CCSID01142""CP01142""ebcdic-dk-277+euro""ebcdic-no-277+euro"}),
        new Charset("Cp1143""IBM01143"new String[] {"CCSID01143""CP01143""ebcdic-fi-278+euro""ebcdic-se-278+euro"}),
        new Charset("Cp1144""IBM01144"new String[] {"CCSID01144""CP01144""ebcdic-it-280+euro"}),
        new Charset("Cp1145""IBM01145"new String[] {"CCSID01145""CP01145""ebcdic-es-284+euro"}),
        new Charset("Cp1146""IBM01146"new String[] {"CCSID01146""CP01146""ebcdic-gb-285+euro"}),
        new Charset("Cp1147""IBM01147"new String[] {"CCSID01147""CP01147""ebcdic-fr-297+euro"}),
        new Charset("Cp1148""IBM01148"new String[] {"CCSID01148""CP01148""ebcdic-international-500+euro"}),
        new Charset("Cp1149""IBM01149"new String[] {"CCSID01149""CP01149""ebcdic-is-871+euro"}),
        new Charset("Cp1250""windows-1250"new String[] {}),
        new Charset("Cp1251""windows-1251"new String[] {}),
        new Charset("Cp1252""windows-1252"new String[] {}),
        new Charset("Cp1253""windows-1253"new String[] {}),
        new Charset("Cp1254""windows-1254"new String[] {}),
        new Charset("Cp1255""windows-1255"new String[] {}),
        new Charset("Cp1256""windows-1256"new String[] {}),
        new Charset("Cp1257""windows-1257"new String[] {}),
        new Charset("Cp1258""windows-1258"new String[] {}),
        new Charset("ISO2022CN""ISO-2022-CN"new String[] {}),
        new Charset("ISO2022JP""ISO-2022-JP"new String[] {"csISO2022JP""JIS""jis_encoding""csjisencoding"}),
        new Charset("ISO2022KR""ISO-2022-KR"new String[] {"csISO2022KR"}),
        new Charset("JIS_X0201""JIS_X0201"new String[] {"X0201""JIS0201""csHalfWidthKatakana"}),
        new Charset("JIS_X0212-1990""JIS_X0212-1990"new String[] {"iso-ir-159""x0212""JIS0212""csISO159JISX02121990"}),
        new Charset("JIS_C6626-1983""JIS_C6626-1983"new String[] {"x-JIS0208""JIS0208""csISO87JISX0208""x0208""JIS_X0208-1983""iso-ir-87"}),
        new Charset("SJIS""Shift_JIS"new String[] {"MS_Kanji""csShiftJIS""shift-jis""x-sjis""pck"}),
        new Charset("TIS620""TIS-620"new String[] {}),
        new Charset("MS932""Windows-31J"new String[] {"windows-932""csWindows31J""x-ms-cp932"}),
        new Charset("EUC_TW""EUC-TW"new String[] {"x-EUC-TW""cns11643""euctw"}),
        new Charset("x-Johab""johab"new String[] {"johab""cp1361""ms1361""ksc5601-1992""ksc5601_1992"}),
        new Charset("MS950_HKSCS"""new String[] {}),
        new Charset("MS874""windows-874"new String[] {"cp874"}),
        new Charset("MS949""windows-949"new String[] {"windows949""ms_949""x-windows-949"}),
        new Charset("MS950""windows-950"new String[] {"x-windows-950"}),

        new Charset("Cp737", null, new String[] {}),
        new Charset("Cp856", null, new String[] {}),
        new Charset("Cp875", null, new String[] {}),
        new Charset("Cp921", null, new String[] {}),
        new Charset("Cp922", null, new String[] {}),
        new Charset("Cp930", null, new String[] {}),
        new Charset("Cp933", null, new String[] {}),
        new Charset("Cp935", null, new String[] {}),
        new Charset("Cp937", null, new String[] {}),
        new Charset("Cp939", null, new String[] {}),
        new Charset("Cp942", null, new String[] {}),
        new Charset("Cp942C", null, new String[] {}),
        new Charset("Cp943", null, new String[] {}),
        new Charset("Cp943C", null, new String[] {}),
        new Charset("Cp948", null, new String[] {}),
        new Charset("Cp949", null, new String[] {}),
        new Charset("Cp949C", null, new String[] {}),
        new Charset("Cp950", null, new String[] {}),
        new Charset("Cp964", null, new String[] {}),
        new Charset("Cp970", null, new String[] {}),
        new Charset("Cp1006", null, new String[] {}),
        new Charset("Cp1025", null, new String[] {}),    
        new Charset("Cp1046", null, new String[] {}),
        new Charset("Cp1097", null, new String[] {}),
        new Charset("Cp1098", null, new String[] {}),
        new Charset("Cp1112", null, new String[] {}),
        new Charset("Cp1122", null, new String[] {}),
        new Charset("Cp1123", null, new String[] {}),
        new Charset("Cp1124", null, new String[] {}),
        new Charset("Cp1381", null, new String[] {}),
        new Charset("Cp1383", null, new String[] {}),
        new Charset("Cp33722", null, new String[] {}),
        new Charset("Big5_Solaris", null, new String[] {}),
        new Charset("EUC_JP_LINUX", null, new String[] {}),
        new Charset("EUC_JP_Solaris", null, new String[] {}),
        new Charset("ISCII91", null, new String[] {"x-ISCII91""iscii"}),
        new Charset("ISO2022_CN_CNS", null, new String[] {}),
        new Charset("ISO2022_CN_GB", null, new String[] {}),
        new Charset("x-iso-8859-11", null, new String[] {}),
        new Charset("JISAutoDetect", null, new String[] {}),
        new Charset("MacArabic", null, new String[] {}),
        new Charset("MacCentralEurope", null, new String[] {}),
        new Charset("MacCroatian", null, new String[] {}),
        new Charset("MacCyrillic", null, new String[] {}),
        new Charset("MacDingbat", null, new String[] {}),
        new Charset("MacGreek""MacGreek"new String[] {}),
        new Charset("MacHebrew", null, new String[] {}),
        new Charset("MacIceland", null, new String[] {}),
        new Charset("MacRoman""MacRoman"new String[] {"Macintosh""MAC""csMacintosh"}),
        new Charset("MacRomania", null, new String[] {}),
        new Charset("MacSymbol", null, new String[] {}),
        new Charset("MacThai", null, new String[] {}),
        new Charset("MacTurkish", null, new String[] {}),
        new Charset("MacUkraine", null, new String[] {}),
        new Charset("UnicodeBig", null, new String[] {}),
        new Charset("UnicodeLittle", null, new String[] {})
    };

    /**
     * Contains the canonical names of character sets which can be used to 
     * decode bytes into Java chars.
     */
    private static SortedSet<String> decodingSupported = null;
    
    /**
     * Contains the canonical names of character sets which can be used to 
     * encode Java chars into bytes.
     */
    private static SortedSet<String> encodingSupported = null;
    
    /**
     * Maps character set names to Charset objects. All possible names of
     * a charset will be mapped to the Charset.
     */
    private static Map<String, Charset> charsetMap = null;
    
    static {
        decodingSupported = new TreeSet<String>();
        encodingSupported = new TreeSet<String>();
        byte[] dummy = new byte[] {'d''u''m''m''y'};
        for (Charset c : JAVA_CHARSETS) {
            try {
                new String(dummy, c.canonical);
                decodingSupported.add(c.canonical.toLowerCase());
            catch (UnsupportedOperationException e) {
            catch (UnsupportedEncodingException e) {
            }
            try {
                "dummy".getBytes(c.canonical);
                encodingSupported.add(c.canonical.toLowerCase());
            catch (UnsupportedOperationException e) {
            catch (UnsupportedEncodingException e) {
            }
        }
        
        charsetMap = new HashMap<String, Charset>();
        for (Charset c : JAVA_CHARSETS) {
            charsetMap.put(c.canonical.toLowerCase(), c);
            if (c.mime != null) {
                charsetMap.put(c.mime.toLowerCase(), c);
            }
            if (c.aliases != null) {
                for (String str : c.aliases) {
                    charsetMap.put(str.toLowerCase(), c);
                }
            }
        }
    }

    /** carriage return - line feed sequence */
    public static final String CRLF = "\r\n";

    /** US-ASCII CR, carriage return (13) */
    public static final int CR = '\r';

    /** US-ASCII LF, line feed (10) */
    public static final int LF = '\n';

    /** US-ASCII SP, space (32) */
    public static final int SP = ' ';

    /** US-ASCII HT, horizontal-tab (9) */
    public static final int HT = '\t';

    public static final java.nio.charset.Charset US_ASCII = java.nio.charset.Charset
            .forName("US-ASCII");

    public static final java.nio.charset.Charset ISO_8859_1 = java.nio.charset.Charset
            .forName("ISO-8859-1");

    public static final java.nio.charset.Charset UTF_8 = java.nio.charset.Charset
            .forName("UTF-8");

    public static final java.nio.charset.Charset DEFAULT_CHARSET = US_ASCII;

    /**
     * Returns <code>true</code> if the specified character falls into the US
     * ASCII character set (Unicode range 0000 to 007f).
     
     @param ch
     *            character to test.
     @return <code>true</code> if the specified character falls into the US
     *         ASCII character set, <code>false</code> otherwise.
     */
    public static boolean isASCII(char ch) {
        return (0xFF80 & ch== 0;
    }

    /**
     * Returns <code>true</code> if the specified string consists entirely of
     * US ASCII characters.
     
     @param s
     *            string to test.
     @return <code>true</code> if the specified string consists entirely of
     *         US ASCII characters, <code>false</code> otherwise.
     */
    public static boolean isASCII(final String s) {
        if (s == null) {
            throw new IllegalArgumentException("String may not be null");
        }
        final int len = s.length();
        for (int i = 0; i < len; i++) {
            if (!isASCII(s.charAt(i))) {
                return false;
            }
        }
        return true;
    }

    /**
     * Returns <code>true</code> if the specified character is a whitespace
     * character (CR, LF, SP or HT).
     
     @param ch
     *            character to test.
     @return <code>true</code> if the specified character is a whitespace
     *         character, <code>false</code> otherwise.
     */
    public static boolean isWhitespace(char ch) {
        return ch == SP || ch == HT || ch == CR || ch == LF;
    }

    /**
     * Returns <code>true</code> if the specified string consists entirely of
     * whitespace characters.
     
     @param s
     *            string to test.
     @return <code>true</code> if the specified string consists entirely of
     *         whitespace characters, <code>false</code> otherwise.
     */
    public static boolean isWhitespace(final String s) {
        if (s == null) {
            throw new IllegalArgumentException("String may not be null");
        }
        final int len = s.length();
        for (int i = 0; i < len; i++) {
            if (!isWhitespace(s.charAt(i))) {
                return false;
            }
        }
        return true;
    }
    
    /**
     * Determines if the VM supports encoding (chars to bytes) the 
     * specified character set. NOTE: the given character set name may 
     * not be known to the VM even if this method returns <code>true</code>.
     * Use {@link #toJavaCharset(String)} to get the canonical Java character
     * set name.
     
     @param charsetName the characters set name.
     @return <code>true</code> if encoding is supported, <code>false</code>
     *         otherwise.
     */
    public static boolean isEncodingSupported(String charsetName) {
        return encodingSupported.contains(charsetName.toLowerCase());
    }
    
    /**
     * Determines if the VM supports decoding (bytes to chars) the 
     * specified character set. NOTE: the given character set name may 
     * not be known to the VM even if this method returns <code>true</code>.
     * Use {@link #toJavaCharset(String)} to get the canonical Java character
     * set name.
     
     @param charsetName the characters set name.
     @return <code>true</code> if decoding is supported, <code>false</code>
     *         otherwise.
     */
    public static boolean isDecodingSupported(String charsetName) {
        return decodingSupported.contains(charsetName.toLowerCase());
    }
    
    /**
     * Gets the preferred MIME character set name for the specified
     * character set or <code>null</code> if not known.
     
     @param charsetName the character set name to look for.
     @return the MIME preferred name or <code>null</code> if not known.
     */
    public static String toMimeCharset(String charsetName) {
        Charset c = charsetMap.get(charsetName.toLowerCase());
        if (c != null) {
            return c.mime;
        }
        return null;
    }
    
    /**
     * Gets the canonical Java character set name for the specified
     * character set or <code>null</code> if not known. This should be
     * called before doing any conversions using the Java API. NOTE:
     * you must use {@link #isEncodingSupported(String)} or
     {@link #isDecodingSupported(String)} to make sure the returned
     * Java character set is supported by the current VM.
     
     @param charsetName the character set name to look for.
     @return the canonical Java name or <code>null</code> if not known.
     */
    public static String toJavaCharset(String charsetName) {
        Charset c = charsetMap.get(charsetName.toLowerCase());
        if (c != null) {
            return c.canonical;
        }
        return null;
    }

    public static java.nio.charset.Charset getCharset(String charsetName) {
        String defaultCharset = "ISO-8859-1";
        
        // Use the default chareset if given charset is null
        if(charsetName == nullcharsetName = defaultCharset;
            
        try {
            return java.nio.charset.Charset.forName(charsetName);
        catch (IllegalCharsetNameException e) {
            // Use default charset on exception 
            return java.nio.charset.Charset.forName(defaultCharset);
        catch (UnsupportedCharsetException ex) {
            // Use default charset on exception
            return java.nio.charset.Charset.forName(defaultCharset);
        }
        
    }
    /*
     * Uncomment the code below and run the main method to regenerate the
     * Javadoc table above when the known charsets change. 
     */
    
    /*
    private static String dumpHtmlTable() {
        List<Charset> l = new LinkedList<Charset>(Arrays.asList(JAVA_CHARSETS));
        Collections.sort(l);
        StringBuilder sb = new StringBuilder();
        sb.append(" * <table>\n");
        sb.append(" *     <tr>\n");
        sb.append(" *         <td>Canonical (Java) name</td>\n");
        sb.append(" *         <td>MIME preferred</td>\n");
        sb.append(" *         <td>Aliases</td>\n");
        sb.append(" *     </tr>\n");

        for (Charset c : l) {
            sb.append(" *     <tr>\n");
            sb.append(" *         <td>" + c.canonical + "</td>\n");
            sb.append(" *         <td>" + (c.mime == null ? "?" : c.mime)+ "</td>\n");
            sb.append(" *         <td>");
            for (int i = 0; c.aliases != null && i < c.aliases.length; i++) {
                sb.append(c.aliases[i] + " ");
            }
            sb.append("</td>\n");
            sb.append(" *     </tr>\n");
        }
        sb.append(" * </table>\n");
        return sb.toString();
    }
    
    public static void main(String[] args) {
        System.out.println(dumpHtmlTable());
    }
    */
}

   
    
  
Related examples in the same category
1. Convert Encoding
2. Utility methods for ASCII character checking.
3. Reader for UCS-2 and UCS-4 encodings. (i.e., encodings from ISO-10646-UCS-(2|4)).
4. Conversions between IANA encoding names and Java encoding names, and vice versa.
5. ASCII character handling functions
6. This class represents an encoding.
7. Provides information about encodings.
8. Codec for the Quoted-Printable section of http://www.ietf.org/rfc/rfc1521.txt (RFC 1521)
9. ISO 8859-8, ASCII plus Hebrew
10. TIS-620 does not have the non-breaking space or the C1 controls.
11. ISO-8859-1; a.k.a. Latin-1
12. ISO 8859-2, a.k.a. Latin-2
13. ISO 8859-3
14. ISO 8859-4, Latin plus the characters needed for Greenlandic, Icelandic, and Lappish.
15. ISO 8859-9 for Turkish.
16. ISO-8859-10, for Lithuanian, Estonian, Greenlandic, Icelandic, Inuit, Lappish, and other Northern European languages.
17. ISO-8859-13, for Latvian and other Baltic languages.
18. ISO-8859-14, for Gaelic, Welsh, and other Celtic languages.
19. ISO 8859-9 for Western Europe. Includes the Euro sign and several uncommon French letters
20. ISO 8859-16, Romanian
21. ASCII Writer
22. UCS Writer
23. Unicode Writer
24. Whether a character is or is not available in a particular encoding
25. ISO 8859-6, ASCII plus Arabic
26. ISO 8859-5, ASCII plus Cyrillic (Russian, Byelorussian, etc.)
27. ISO 8859-7, ASCII plus Greek
28. IANA to Java Mapping
29. Java to IANA Mapping
30. EncodingMap is a convenience class which handles conversions between IANA encoding names and Java encoding names, and vice versa.
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.