A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

jdk1.4提供了Charset类来处理字节序列和字符序列(字符串)的转换关系,使用Charset类能够创建编码器和解码器。

首先,获取Charset对象需要提供字符集的名称,如GBK。我们通过Charset类打印JDK支持的所有字符集。



  • // 获取Java支持的全部字符集



  • SortedMap<String,Charset>  map = Charset.availableCharsets();



  • for (String alias : map.keySet())



  • {



  •         // 输出字符集的别名



  •         System.out.println(alias);



  • }


接下来使用编码器将CharBuffer中的字符序列转换为字节序列ByteBuffer。

CharBuffer和ByteBuffer是java NIO中的IO操作类。



  • // 创建简体中文对应的Charset



  • Charset charset = Charset.forName("GBK");



  • // 获取charset对象对应的编码器



  • CharsetEncoder charsetEncoder = charset.newEncoder();



  • // 创建一个CharBuffer对象



  • CharBuffer charBuffer = CharBuffer.allocate(20);



  • charBuffer.put("CSDN-专业IT技术社区");



  • charBuffer.flip();



  • // 将CharBuffer中的字符序列转换成字节序列



  • ByteBuffer byteBuffer = charsetEncoder.encode(charBuffer);



  • // 循环访问ByteBuffer中的每个字节



  • for (int i = 0; i < byteBuffer.limit(); i++)



  • {



  •         System.out.print(byteBuffer.get(i) + " ");



  • }


然后使用解码器将ByteBuffer中的字节序列转换为字符序列CharBuffer(字符串)。



  • // 创建简体中文对应的Charset



  • Charset charset = Charset.forName("GBK");



  • // 获取charset对象对应的编码器



  • CharsetDecoder charsetDecoder = charset.newDecoder();



  • // 创建一个ByteBuffer对象



  • ByteBuffer byteBuffer = ByteBuffer.allocate(50);



  • byteBuffer.put("CSDN-专业IT技术社区".getBytes("GBK"));



  • byteBuffer.flip();







  • // 将ByteBuffer的数据解码成字符序列



  • System.out.println(charsetDecoder.decode(byteBuffer));





【转载】        https://blog.csdn.net/qq_36691683/article/details/81608244


2 个回复

倒序浏览
回复 使用道具 举报
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马