- Java NIO 教程
- Java NIO - 首页
- Java NIO - 概述
- Java NIO - 环境设置
- Java NIO 对比 Java IO
- Java NIO - 通道
- Java NIO - 文件通道
- Java NIO - 数据报通道
- Java NIO - 套接字通道
- Java NIO - 服务器套接字通道
- Java NIO - 分散
- Java NIO - 收集
- Java NIO - 缓冲区
- Java NIO - 选择器
- Java NIO - 管道
- Java NIO - 路径
- Java NIO - 文件
- Java NIO - 异步文件通道
- Java NIO - CharSet
- Java NIO - 文件锁
- Java NIO 有用资源
- Java NIO - 快速指南
- Java NIO - 有用资源
- Java NIO - 讨论
Java NIO - CharSet
在 Java 中,每个字符都有一个由 JVM 内部处理的明确定义的 unicode 代码单元。因此,Java NIO 包定义了一个名为 Charset 的抽象类,主要用于 charset 和 UNICODE 的编码和解码。
标准字符集
下面给出 Java 中支持的 Charset。
US-ASCII − 七位 ASCII 字符。
ISO-8859-1 − ISO 拉丁字母。
UTF-8 − 这是 8 位 UCS 转换格式。
UTF-16BE − 这是 16 位 UCS 转换格式,采用大端字节顺序。
UTF-16LE − 这是 16 位 UCS 转换格式,采用小端字节顺序。
UTF-16 − 16 位 UCS 转换格式。
Charset 类的重要方法
forName() − 此方法为给定的 charset 名称创建一个 charset 对象。该名称可以是规范名称或别名。
displayName() − 此方法返回给定 charset 的规范名称。
canEncode() − 此方法检查给定的字符集是否支持编码。
decode() − 此方法将给定 charset 的字符串解码为 Unicode charset 的字符缓冲区。
encode() − 此方法将 unicode charset 的字符缓冲区编码为给定 charset 的字节缓冲区。
示例
以下示例说明了 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.
广告