 
- Java NIO Tutorial
- Java NIO - Home
- Java NIO - Overview
- Java NIO - Environment Setup
- Java NIO vs JAVA IO
- Java NIO - Channels
- Java NIO - File Channel
- Java NIO - DataGram Channel
- Java NIO - Socket Channel
- Java NIO - Server Socket Channel
- Java NIO - Scatter
- Java NIO - Gather
- Java NIO - Buffer
- Java NIO - Selector
- Java NIO - Pipe
- Java NIO - Path
- Java NIO - File
- Java NIO - AsynchronousFileChannel
- Java NIO - CharSet
- Java NIO - FileLock
- Java NIO Useful Resources
- Java NIO - Quick Guide
- Java NIO - Useful Resources
- Java NIO - Discussion
Java NIO - 字符集
在Java中,每个字符都有一个明确定义的unicode代码单元,由JVM内部处理。因此Java NIO包定义了一个名为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 转换格式。 
Charset类的重要方法
- forName() - 此方法为给定的字符集名称创建一个字符集对象。该名称可以是规范的或别名。 
- displayName() - 此方法返回给定字符集的规范名称。 
- canEncode() - 此方法检查给定的字符集是否支持编码。 
- decode() - 此方法将给定字符集的字符串解码为 Unicode 字符集的字符缓冲区。 
- encode() - 此方法将 unicode 字符集的 charbuffer 编码到给定字符集的字节缓冲区中。 
例子
以下示例说明了 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.