Java Nio 简明教程

Java NIO - CharSet

在 Java 中,每个字符都都有一个由 JVM 内部处理的明确定义的 unicode 代码单元。因此,Java NIO 包定义了一个名为 Charset 的抽象类,该类主要用于编码和解码字符集和 unicode。

Standard charsets

下面给出了 Java 中支持的 Charset。

  1. US-ASCII − 七位 ASCII 字符。

  2. ISO-8859-1 − ISO 拉丁字母。

  3. UTF-8 − 这是 8 位 UCS 转换格式。

  4. UTF-16BE − 这是 16 位 UCS 转换格式,具有大端字节顺序。

  5. UTF-16LE − 这是 16 位 UCS 转换,具有小端字节顺序。

  6. UTF-16 − 16 位 UCS 转换格式。

Important methods of Charset class

  1. forName() − 此方法为给定的字符集名称创建一个字符集对象。名称可以是规范名称或别名。

  2. displayName() − 此方法返回给定字符集的规范名称。

  3. canEncode() − 此方法检查给定字符集是否支持编码。

  4. decode() − 此方法将给定字符集的字符串解码为 Unicode 字符集的字符缓冲区。

  5. encode() − 此方法将 Unicode 字符集的字符缓冲区编码为给定字符集的字节缓冲区。

Example

以下示例说明了 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();
   }
}

Output

US-ASCII
Demo text for conversion.