Java NIO編碼和解碼
使用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.