Java NIO編碼和解碼

使用Java NIO API編碼和解碼操作可以從一個字符串執行到另一個字符集。兩個類:CharsetEncoderCharsetDecoderByteBufferCharBuffer之間的編碼和解碼中起着重要的作用。

只有當處理程序可用時,反應堆(Reactor)保持到達事件的跟蹤和調度。我們來看看反應堆中執行的編碼和解碼操作的架構:

Java

Java NIO中的CharsetEncoder

CharsetEncoder用於將Unicode字符編碼爲字節序列。它還返回一個提供任何錯誤信息的CoderResult對象。

Java NIO中的CharsetDecoder

CharsetDecoder用於將數組或字節序列解碼爲Unicode字符。在從ByteBufferCharBuffer的解碼過程中,獲得CoderResult對象。

Java NIO中的Charset.newEncoder()

CharsetEncoder中,Charset.newEncoder()用於創建Charset對象,然後通過newEncoder()方法,可以獲取CharsetEncoder對象。

Java NIO Charset.newDecoder()

CharsetDecoder中,Charset.newDecoder()用於創建Charset對象,然後通過newDecoder()方法,可以獲取一個CharsetDecoder對象。

基本編碼和解碼示例

package com.yiibai;

import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;

public class CharsetExam {
    public static void main(String[] args) throws CharacterCodingException {
        Charset cs = Charset.forName("UTF-8");
        CharsetDecoder csdecoder = cs.newDecoder();
        CharsetEncoder csencoder = cs.newEncoder();
        String st = "Example of Encode and Decode in Java NIO.";
        ByteBuffer bb = ByteBuffer.wrap(st.getBytes());
        CharBuffer cb = csdecoder.decode(bb);
        ByteBuffer newbb = csencoder.encode(cb);
        while (newbb.hasRemaining()) {
            char ca = (char) newbb.get();
            System.out.print(ca);
        }
        newbb.clear();
    }
}

執行上面示例代碼,得到以下結果 -

Example of Encode and Decode in Java NIO.