Java NIO - CharSet(字符集)

  • 简述

    在Java中,每个字符都有一个定义良好的unicode代码单元,该单元由 JVM.So Java NIO包内部处理,该抽象类名为Charset,主要用于字符集和UNICODE的编码和解码。
  • 标准字符集

    下面给出了java中支持的字符集。
    • US-ASCII − 七位 ASCII 字符。
    • ISO-8859-1 − 国际标准化组织拉丁字母。
    • 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.";
          //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.