字符集就是为每个字符编个号码。如ASCII编码中,字符 'A' 的号码为 65 (或二进制01000001);GBK编码中,字符 '国' 对应的号码为47610 。
编码:将字符序列转换成二进制序列。
解码:将二进制序列转换成字符序列。
java提供Charset类来处理字节序列与字符序列的转换。
Charset类提供 forName()方法创建Charset实例。
Charset charset = Charset.forName("GBK");
Charset类提供如下方法用于编码与解码:
CharBuffer decode(ByteBuffer bb) // 将ByteBuffer中的字节序列转换为字符序列
ByteBuffer encode(CharBuffer cb) // 将CharBuffer中的字符序列转换为字节序列
ByteBuffer encode(String str) // 将String中的字符序列转换为字节序列
示例如下:
// 创建GBK字符集对象
Charset charset = Charset.forName("GBK");
// 将字符串序列转为字节序列
ByteBuffer byteBuffer = charset.encode("天空sky");
// 将字节序列转为字符序列
CharBuffer charBuffer = charset.decode(byteBuffer);
System.out.println(charBuffer);