Charset类处理编码的问题,该类包含了创建编码器(CharsetEncoder)和创建解码(CharsetDecoder)启动操作。
- CharsetEncoder的编码方法: public final ByteBuffer encode(CharBuffer in);
- CharsetDecoder的解码方法: public final CharBuffer decode(ByteBuffer in);
1、编码和解码的例子:
package com.mydemo;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;
public class NIOCharsetDemo {
public static void main(String[] args) throws Exception {
// 创建指定编码
Charset charset = Charset.forName("UTF-8");
// 获取编码类对象
CharsetEncoder charsetEncoder = charset.newEncoder();
// 获取解码类对象
CharsetDecoder charsetDecoder = charset.newDecoder();
// 字符数据
String str = "测试测试testtest";
// 创建缓冲区
CharBuffer charBuffer = CharBuffer.allocate(20);
// 向字符缓冲区保存数据
charBuffer.put(str);
// 缓冲区重置
charBuffer.flip();
// 编码处理
ByteBuffer byteBuffer = charsetEncoder.encode(charBuffer);
// 解码处理
System.out.println(charsetDecoder.decode(byteBuffer));
}
}