使用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.