黑马程序员技术交流社区

标题: JAVA NIO之字符集(Charset) [打印本页]

作者: fjl_fight    时间: 2013-5-3 16:58
标题: JAVA NIO之字符集(Charset)
java中所有信息都是以Unicode进行编码的,而计算机中有很多编码,如果处理不当则会产生乱码,在java nio包中提供了 Charset 类负责处理编码问题,创建编码器CharsetEncoder和创建解码器CharsetDecoder
如: Charset类的全部编码
import java.nio.charset.Charset ;
import java.util.SortedMap ;
import java.util.Iterator ;
import java.util.Map ;
public class GetAllCharsetDemo{
       public staticvoid main(String args[]){
              SortedMap<String,Charset>all = null ;
              // 得到全部可用的字符集
              all =Charset.availableCharsets() ;     
              //迭代输出
              Iterator<Map.Entry<String,Charset>>iter = null ;
              iter =all.entrySet().iterator() ;
              while(iter.hasNext()){
                     Map.Entry<String,Charset>me = iter.next() ;
                     System.out.println(me.getKey()+ " --> " + me.getValue()) ;
              }
       }
}

编码解码操作:
import java.nio.charset.Charset ;
import java.nio.charset.CharsetEncoder ;
import java.nio.charset.CharsetDecoder ;
import java.nio.CharBuffer ;
import java.nio.ByteBuffer ;
public class CharsetEnDeDemo{
       public staticvoid main(String args[]) throws Exception {
              // 只能表示的英文字符
              Charsetlatin1 = Charset.forName("ISO-8859-1") ;      
              //Charsetlatin1 = Charset.forName("GBK") ;   
              // 得到编码器
              CharsetEncoderencoder = latin1.newEncoder() ;  
              // 得到解码器
              CharsetDecoderdecoder = latin1.newDecoder() ;  
              // 通过CharBuffer类中的
              CharBuffercb = CharBuffer.wrap("2013年五一上映钢铁侠三") ;
              // 进行编码操作
              ByteBuffer buf = encoder.encode(cb) ;   
              // 进行解码操作
              System.out.println(decoder.decode(buf));
              
              /**
               *由于ISO-8859-1编码只能显示英文,故中文是没法显示的,程序会报错
               */
       }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2