在Java中,每个字符都有一个unicode代码单元,该代码单元由JVM内部处理。因此Java NIO包定义了一个名为Charset的抽象类,主要用于对charset和UNICODE进行编码和解码。
Java中受支持的字符集如下所示。
US-ASCII - 七位ASCII字符。
ISO-8859-1 - ISO拉丁字母。
UTF-8 - 这是8位UCS转换格式。
UTF-16BE - 这是16位UCS转换格式,具有大字节序。
UTF-16LE - 这是具有低字节序的16位UCS转换。
UTF-16 - 16位UCS转换格式。
forName() - 此方法为给定的字符集名称创建一个字符集对象。
displayName() - 此方法返回给定字符集的规范名称。
canEncode() - 此方法检查给定的字符集是否支持编码。
decode() - 此方法将给定字符集的字符串解码为Unicode字符集的字符缓冲区。
encode() - 此方法将Unicode字符集的字符缓冲区编码为给定字符集的字节缓冲区。
以下示例说明了Charset类的重要方法。
package com.java.nio; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; public class CharsetExample { public static void main(String[] args) { Charset charset = Charset.forName("US-ASCII"); System.out.println(charset.displayName()); System.out.println(charset.canEncode()); String str= "Demo text for conversion."; //将给定字符集中的字节缓冲区转换为 unicode 中的字符缓冲区 ByteBuffer byteBuffer = ByteBuffer.wrap(str.getBytes()); CharBuffer charBuffer = charset.decode(byteBuffer); //将 unicode 中的字符缓冲区转换为给定字符集中的字节缓冲区 ByteBuffer newByteBuffer = charset.encode(charBuffer); while(newbb.hasRemaining()){ char ch = (char) newByteBuffer.get(); System.out.print(ch); } newByteBuffer.clear(); } }
运行上面代码输出
US-ASCII Demo text for conversion.
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)
HarmonyOS快速入门与实战 -〔QCon+案例研习社〕