JAVAで文字コード変換

文字列から文字列で変換するのはよくある話

String sjis_str = "SJISの文字列";
byte[] sjis_bytes = sjis_str.getBytes( "Windows-31J" );
String utf8_str = new String( sjis_bytes, "UTF-8" );

って。


でも、できないーと思っていたら、
sjis_strにUTF-8が入っていたんだ。


まぁ何でこんなことになったかって言うと、
問題はInputStreamReaderだった。


WEBページをゲットする際に、
InputStream

InputStreamReader

BufferedReeader

BufferedReeader#readLine()
で値をとることが多い。


InputStreamReaderのコンストラクタには、
文字コードを指定する奴があって、
その時点でWindows-31Jを指定してやって、
それをUTF-8に変換しなきゃいけないってね。


また一つ勉強になった。