黑马程序员技术交流社区
标题: 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 |