Java NIO編碼和解碼


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

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

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.