💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 简介 在java.nio.charset包中提供了Charset类. 向ByteBuffer中存放数据时需要考虑字符集的编码方式,从中读取时需要考虑字符集的解码方式. 要读和写文件需要分别使用CharsetDecoder(解码器)和CharsetEncoder(编码器) # 使用 查看支持哪些字符集 ~~~ SortedMap<String, Charset> charsets = Charset.availableCharsets(); Set<Map.Entry<String, Charset>> entries = charsets.entrySet(); Iterator<Map.Entry<String, Charset>> iterator = entries.iterator(); while (iterator.hasNext()) { Map.Entry<String, Charset> entry = iterator.next(); System.out.println(entry.getKey() + "---" + entry.getValue()); } ~~~ 获取Charset ~~~ Charset cs = Charset.forName("编码方式"); //UTF-8 ~~~ 使用Charset ~~~ final CharsetDecoder decoder = cs.newDecoder(); final CharsetEncoder encoder = cs.newEncoder(); ~~~ 我们把ByteBuffer传递给decoder进行编码,返回一个CharBuffer ~~~ CharBuffer cb = decoder.decode(inputData); ~~~ 我们可以使用encoder进行解码返回一个ByteBuffer ~~~ ByteBuffer outputData = encoder.encode(cb); ~~~ # 代码 ~~~ //1.如何实例化 // Charset charset = Charset.forName("gbk"); Charset charset = Charset.forName("utf-8"); //2.得到编码器 和 解码器 CharsetEncoder encoder = charset.newEncoder();//编码器 CharsetDecoder decoder = charset.newDecoder();//解码器 CharBuffer charBuffer = CharBuffer.allocate(1024); charBuffer.put("保持微笑"); charBuffer.flip(); ByteBuffer byteBuffer = encoder.encode(charBuffer);//编码 //将编码后的数据输出到控制台 // byte[] array = byteBuffer.array(); for(int i = 0;i < byteBuffer.limit();i++){ // System.out.println(array[i]); System.out.println(byteBuffer.get()); } byteBuffer.flip(); CharBuffer charBuffer2 = decoder.decode(byteBuffer);//解码 System.out.println(new String(charBuffer2.array(),0,charBuffer2.limit())); System.out.println("******************"); Charset charset1 = Charset.forName("gbk"); CharsetDecoder decoder2 = charset1.newDecoder(); byteBuffer.flip(); CharBuffer charBuffer3 = decoder2.decode(byteBuffer);//解码 System.out.println(new String(charBuffer3.array(),0,charBuffer3.limit())); ~~~