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.
廣告
© . All rights reserved.