1、NIO中的Charset类表示字符集,可以使用它来完成数据的编码与解码:
编码:字符串---->字节数组
解码:字节数组----->字符串
2、我们通过案例来演示Charset的使用:
@Testpublic void test12() throws IOException {获取GBK的字符集实例Charset charset = Charset.forName("GBK");获取字符集实例的 编码器CharsetEncoder encoder = charset.newEncoder();获取字符集实例 的解码器CharsetDecoder decoder = charset.newDecoder();分配一个字符缓冲区,且添加一些字符,在GBK中一个中文字符需要使用3个字节来表示。CharBuffer charBuffer = CharBuffer.allocate(1024);charBuffer.put("源哥威武!");切换字符缓冲区为读模式charBuffer.flip();使用GBK的字符集实例 对 字符缓冲区进行编码,从而得到一个字节缓冲区。ByteBuffer byteBuffer = encoder.encode(charBuffer);输出得到的字节缓冲区中数据for (int i=0; i<10;i++){System.out.println(byteBuffer.get());}切换编码得到的字节缓冲区 为写模式byteBuffer.flip();使用GBK的字符集实例 解码 字节缓冲区。CharBuffer decodeCharBuffer = decoder.decode(byteBuffer);输出解码后的字节缓冲区System.out.println(decodeCharBuffer.toString());}
输出结果:
-44
-76
-72
-25
-51
-2
-50
-28
-93
-95
源哥威武!