📅  最后修改于: 2020-11-14 10:16:15             🧑  作者: Mango
在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() -此方法检查给定的字符集是否支持编码。
encode () -此方法将给定字符集的字符串解码为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.";
//convert byte buffer in given charset to char buffer in unicode
ByteBuffer byteBuffer = ByteBuffer.wrap(str.getBytes());
CharBuffer charBuffer = charset.decode(byteBuffer);
//convert char buffer in unicode to byte buffer in given charset
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.