Java中CharSet字符集

4878 2026-02-03 02:02:27
java.nio.charset包中提供了Charset类,它继承了Comparable接口;还有CharsetDecoder、CharsetEncoder编码和解码的类,它们都是继承Object类。 Java中的字符使用U

java.nio.charset包中提供了Charset类,它继承了Comparable接口;还有CharsetDecoder、CharsetEncoder编码和解码的类,它们都是继承Object类。

Java中的字符使用Unicode编码,每个字符占用两个字节,16个二进制位,向ByteBuffer中存放数据的时候需要考虑字符的编码,从中读取的时候也需要考虑字符的编码方式,也就是编码和解码。

1.获取字符集有如下两种方式

//返回指定的字符集CharSet

Charset charset = Charset.forName("utf8");

//返回虚拟机默认的字符集CharSet

Charset charset = Charset.defaultCharset();

2.接下来我们使用字符集CharSet创建一个编码器和一个解码器

//编码器

CharsetEncoder encoder = charset.newEncoder();

//解码器

CharsetDecoder decoder = charset.newDecoder();

3.使用编码器和解码器解析数据

//编码,传入CharBuffer

ByteBuffer bytebuffer = encoder.encode(in);

//解码,传入ByteBuffer

CharBuffer charbuffer = decoder.decode(in);

4.具体使用案例

public static void main(String[] args) {

Charset charset = Charset.forName("utf8");

System.out.println(charset.name()+"--"+charset.canEncode());

//返回一个包含该字符的别名,字符集的别名是不可变的

Set set = charset.aliases();

Iterator it = set.iterator();

while(it.hasNext()) {

System.out.println(it.next());

}

System.out.println("----------编码----------------");

ByteBuffer buffer = charset.encode("sdf");

System.out.println(buffer);

System.out.println("缓冲区剩余的元素数--"+buffer.remaining());

while(buffer.hasRemaining()) {

System.out.println((char)buffer.get());

}

System.out.println("缓冲区剩余的元素数--"+buffer.remaining());

System.out.println("----------解码----------------");

//清空缓冲区,将限制设置恢复,如果定义了标记,则将它们丢弃

buffer.flip();

}

你知道蛤蟆草、癞肚皮么?炒鸡蛋天然止咳消炎|半月斗鱼饲养全攻略(宠物鱼的养殖秘籍,教你如何打造美丽水族馆)