Java NIO-字符集

一 前言

                Java NIO提供了字符集,实现对文件编码,解码的更好支持,用字符集可以获取系统支持的编码格式,在获取文件时,可以指定解码格式,然后进行输出时,指定编码的格式,避免获取和输出的文件时乱码。

二 字符集

                   availableCharsets():获取系统可支持的编码格式
     canEncode() :通知此 charset 是否支持编码
      newDecoder() :为此 charset 构造新的解码器。
     newEncoder() :为此 charset 构造新的编码器。
     forName(String charsetName) :返回指定 charset 的 charset 对象
     encode(String str) :将此 charset 中的字符串编码成字节
     decode(ByteBuffer bb) :将此 charset 中的字节解码成 Unicode 字符 

三 应用

     1.获取系统支持编码字符集

package com.myd.cn.Nio;


import java.nio.charset.Charset;
import java.util.Iterator;
import java.util.Map;
import java.util.SortedMap;




/**
 * 获取系统支持的编码格式
 * @author MAYADONG
 *
 */
public class GetAllCharset01 {
          public static void main(String[] args) {
 //声明编码格式存放变量
         SortedMap<String, Charset>  all = null;
         
         //进行赋值
         all = Charset.availableCharsets();
         
         //声明迭代器进行迭代输出
         Iterator<Map.Entry<String,Charset>> it = null;
         
         //进行迭代有序输出
         it  = all.entrySet().iterator();
         
         while (it.hasNext()){
Map.Entry<String, Charset> me = it.next();
System.out.println("key: "+me.getKey()+",value: "+me.getValue());

}
         
}
}


2.对输出内容进行编码,解码输出

package com.myd.cn.Nio;


import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;


public class CharsetEncodeDemo {
          public static void main(String[] args) throws CharacterCodingException {
          //指定编码格式的字符集
  Charset iso = Charset.forName("GBK");
   
  //获取该编码格式的编码器
  CharsetEncoder en = iso.newEncoder();
  //获取该编码格式的解码器
  CharsetDecoder de = iso.newDecoder();
  
  CharBuffer cb  =  CharBuffer.wrap("MODL急啊存放");
  
  //进行编码获取
  ByteBuffer buf = en.encode(cb);
  
  //进行解码输出
  System.out.println(de.decode(buf));
 
}
}




四 总结

   编码发现如果编码的格式不能支持相应的文字,会出现 java.nio.charset.UnmappableCharacterException: Input length = 1的异常,需要指定正确的编码格式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值