New I/O 4章 文字セット
- 4.1. java.nio.charset パッケージ
- 4.2. Charset クラス
- 4.3. CharsetEncoderクラス
- 4.4. CharsetDecoderクラス
- 4.5. CoderResultクラス
4.4. CharsetDecoderクラス
CharsetDecoderクラスは各種文字セットの文字列をUnicode文字列に変換するためのクラスです。CharsetDecoderインスタンスは、対応するCharsetインスタンスのnewDecoder()メソッドを呼び出すことによって取得できます。
CharsetDecoderクラスの使用方法は、CharsetEncoder と変換の方向が違うだけで、ほとんど同じです。
文字列のデコードを行うメソッドは、以下の2つ存在します。
- CoderResult decode(ByteBuffer in, CharBuffer out, boolean endOfInput)
- CharBuffer decode(ByteBuffer in)
引数が1つのメソッドは、CharsetEncoder クラスの encode メソッドの場合と同じく簡易メソッドです。
Charset クラスの簡易デコードクラスの呼び出し、
CharBuffer charBuf = charset.decode(byteBuf);
は、次の処理とほぼ同等です(charset は Charset 型のインスタンスとします)。
CharBuffer charBuf = charset.newDecoder() .onMalformedInput(CodingErrorAction.REPLACE) .onUnmappableCharacter(CodingErrorAction.REPLACE) .decode(byteBuf);