您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第20章:Java新IO】_字符集
发布时间:2021-01-21 16:31:47编辑:雪饮阅读()
获取全部可用的字符集
其实这个貌似前面获取过,有点久远了完全忘求了
主要是用java.nio.charset.Charset类,看到这里又nio,那么我就确认了这里的确之前没有获取过,之前可能是老io
import java.nio.charset.Charset ;
import java.util.SortedMap ;
import java.util.Iterator ;
import java.util.Map ;
public class Hello{
public static void main(String args[]) throws Exception {
// 得到全部可用的字符集
SortedMap<String,Charset> all = Charset.availableCharsets() ;
Iterator<Map.Entry<String,Charset>> iter = all.entrySet().iterator() ;
while(iter.hasNext()){
Map.Entry<String,Charset> me = iter.next() ;
System.out.println(me.getKey() + " --> " + me.getValue()) ;
}
}
};
编解码
java.nio.charset.CharsetEncoder类用于编码,java.nio.charset.CharsetDecoder类用于解码
import java.nio.charset.Charset ;
import java.nio.charset.CharsetEncoder ;
import java.nio.charset.CharsetDecoder ;
import java.nio.CharBuffer ;
import java.nio.ByteBuffer ;
import java.util.SortedMap ;
import java.util.Iterator ;
import java.util.Map ;
public class Hello{
public static void main(String args[]) throws Exception {
Charset latin1 = Charset.forName("ISO-8859-1") ; // 只能表示的英文字符
CharsetEncoder encoder = latin1.newEncoder() ; // 得到编码器
CharsetDecoder decoder = latin1.newDecoder() ; // 得到解码器
//-----------------------ISO-8859-1编解码--------------------------
System.out.println("-----------------------ISO-8859-1编解码--------------------------");
// 通过CharBuffer类中的
try{
//wrap用于将字符序列包装到缓冲区中。
CharBuffer cb = CharBuffer.wrap("雾幻霞") ;
// 进行编码操作
ByteBuffer buf = encoder.encode(cb) ;
// 进行解码操作
System.out.println(decoder.decode(buf)) ;
}
catch(Exception e){
System.out.println("ISO-8859-1无法编解码中文,只可以编解码英文字符");
CharBuffer kasumi_cb = CharBuffer.wrap("kasumi") ;
ByteBuffer kasumi_buf = encoder.encode(kasumi_cb) ;
System.out.println(decoder.decode(kasumi_buf)) ;
}
//-----------------------GBK编解码--------------------------
System.out.println("-----------------------GBK编解码--------------------------");
System.out.println("GBK可以编解码中文");
CharsetEncoder gbk_encoder=Charset.forName("GBK").newEncoder();
CharsetDecoder gbk_decoder=Charset.forName("GBK").newDecoder();
ByteBuffer gbk_buf = gbk_encoder.encode(CharBuffer.wrap("雾幻霞")) ;
System.out.println(gbk_decoder.decode(gbk_buf)) ;
}
};
D:\>javac Hello.java
D:\>java Hello
-----------------------ISO-8859-1编解码--------------------------
ISO-8859-1无法编解码中文,只可以编解码英文字符
kasumi
-----------------------GBK编解码--------------------------
GBK可以编解码中文
雾幻霞
关键字词:java,CharsetEncoder,CharsetDecoder