使用Java NIO API編碼和解碼操作可以從一個字串執行到另一個字元集。兩個類:CharsetEncoder
和CharsetDecoder
在ByteBuffer
和CharBuffer
之間的編碼和解碼中起著重要的作用。
只有當處理程式可用時,反應堆(Reactor
)保持到達事件的跟蹤和排程。我們來看看反應堆中執行的編碼和解碼操作的架構:
Java NIO中的CharsetEncoder
CharsetEncoder
用於將Unicode
字元編碼為位元組序列。它還返回一個提供任何錯誤資訊的CoderResult
物件。
Java NIO中的CharsetDecoder
CharsetDecoder
用於將陣列或位元組序列解碼為Unicode
字元。在從ByteBuffer
到CharBuffer
的解碼過程中,獲得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.