java charset

来源:互联网 发布:linux开机启动shell 编辑:程序博客网 时间:2024/06/11 00:59
Charset(字符集)

在Java.nio.charset包中共提供了Charset、CharsetDecoder、CharsetEncoder、CodeResult、CodingErrorAction五个类,均继承自Object类,其中Charset实现了Comparable接口,其它类均为自身实现。

Java中的字符使用unicode编码,每个字符占用两个字节。字节码本身只是一些数字,放在正确的上下文中可以被正确的解析。向ByteBuffer中存放数据时需要考虑字符集的编码方式,从中读取时需要考虑字符集的解码。

要读和写文本需要分别使用CharsetDecoder(解码器)和CharsetEncoder(编码器)。

编码:百科中这样定义,编码(coding)是在一个主题或单元上为数据存储,管理和分析的目的而转换信息为编码值(典型地如数字)的过程。在密码学中,编码是指在编码或密码中写的行为。n位二进制数可以组合成2的n次方个不同的信息,给每个信息规定一个具体码组,这种过程也叫编码。数字系统中常用的编码有两类,一类是二进制编码,另一类是二—十进制编码。

(1)如何得到一个CharSet

在JDK源码中提供两种方式得到一个CharSet实例:

       CharSet cs = CharSet.forName(“编码方式”);

       CharSet cs = CharSet.defaultCharSet();

第一种方法返回一个指定字符格式的CharSet,第二种方法返回当前虚拟机默认的字符编码格式的CharSet。

(2)如何使用CharSet

得到一个CharSet实例后,我们需要创建一个编码器和一个解码器,使用下面方法进行创建:

       CharSetDecoder decoder = cs.newDecoder();

       CharSetEncoder encoder = cs.newEncoder();

接着我们把ByteBuffer传递给decoder进行编码,返回一个CharBuffer:

       CharBuffer cb = decoder.decode(inputData);

然后我们可以使用encoder进行解码返回一个ByteBuffer:

       ByteBuffer outputData = encoder.encode(cb);

接下来可以进行写等其它操作。

原创粉丝点击