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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fjl_fight 中级黑马   /  2013-5-3 16:58  /  2500 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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编码只能显示英文,故中文是没法显示的,程序会报错
               */
       }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马