Javaでサポートされている文字コードは?
JavaはシフトJISやEUC,UTFなど様々な文字コードに対応しています。異なる文字コードでも、charsetを引数に渡せば簡単に文字コード変換をすることができます。例えば、以下のAPIがそうですよね。
String(byte[] bytes, String charsetName) InputStreamReader(InputStream in, String charsetName)
ところが、そのcharset名に何が指定できるのかはどこにも書かれていません。いったい charset には何々指定できるのでしょうか?やみくもに、"ShiftJIS"とか"EUC"と指定してもうまくいきません。困ったことありません?(正しくは、"SJIS","EUC_JP"です)
文字コードは、java.nio.charset.spi.CharsetProvider が提供しています。
SUNの場合、charsets.jarの中に、以下のファイルがあります。
META-INF/services/java.nio.charset.spi.CharsetProvider
# NIO charset SPI extended charset provider sun.nio.cs.ext.ExtendedCharsets
このクラスの中に文字コードが入っているのですが、おなじパッケージ内にそのクラスがあるのがわかります。文字コード名がそのままクラス名になっています。そのクラス名を指定すれば、該当する文字コードが指定できます。
私の環境(jdk1.5.0)では以下の文字コード名(クラス名)がありました。
Big5 Big5_HKSCS Big5_Solaris DBCSDecoderMapping DBCS_IBM_ASCII_Decoder DBCS_IBM_ASCII_Encoder DBCS_IBM_EBCDIC_Decoder DBCS_IBM_EBCDIC_Encoder DoubleByteDecoder DoubleByteEncoder EUC_CN EUC_JP EUC_JP_LINUX EUC_JP_Open EUC_KR EUC_TW GB18030 GBK HKSCS HKSCS_2001 IBM037 IBM1006 IBM1025 IBM1026 IBM1046 IBM1047 IBM1097 IBM1098 IBM1112 IBM1122 IBM1123 IBM1124 IBM1140 IBM1141 IBM1142 IBM1143 IBM1144 IBM1145 IBM1146 IBM1147 IBM1148 IBM1149 IBM1381 IBM1383 IBM273 IBM277 IBM278 IBM280 IBM284 IBM285 IBM297 IBM33722 IBM420 IBM424 IBM437 IBM500 IBM737 IBM775 IBM838 IBM850 IBM852 IBM855 IBM856 IBM857 IBM858 IBM860 IBM861 IBM862 IBM863 IBM864 IBM865 IBM866 IBM868 IBM869 IBM870 IBM871 IBM874 IBM875 IBM918 IBM921 IBM922 IBM930 IBM933 IBM935 IBM937 IBM939 IBM942 IBM942C IBM943 IBM943C IBM948 IBM949 IBM949C IBM950 IBM964 IBM970 ISCII91 ISO2022 ISO2022_CN ISO2022_CN_CNS ISO2022_CN_GB ISO2022_JP ISO2022_KR ISO_8859_11 ISO_8859_3 ISO_8859_6 ISO_8859_8 JISAutoDetect JIS_X_0201 JIS_X_0208 JIS_X_0208_Decoder JIS_X_0208_Encoder JIS_X_0208_Solaris_Decoder JIS_X_0208_Solaris_Encoder JIS_X_0212 JIS_X_0212_Decoder JIS_X_0212_Encoder JIS_X_0212_Solaris_Decoder JIS_X_0212_Solaris_Encoder Johab MS1255 MS1256 MS1258 MS874 MS932 MS932DB MS936 MS949 MS950 MS950_HKSCS MacArabic MacCentralEurope MacCroatian MacCyrillic MacDingbat MacGreek MacHebrew MacIceland MacRoman MacRomania MacSymbol MacThai MacTurkish MacUkraine PCK SJIS SimpleEUCDecoder SimpleEUCEncoder TIS_620
多いです。w