Java NIO - CharSet
Trong Java cho mỗi ký tự có một đơn vị mã unicode được xác định rõ ràng được xử lý bên trong bởi JVM. Vì vậy, gói Java NIO định nghĩa một lớp trừu tượng có tên là Charset chủ yếu được sử dụng để mã hóa và giải mã bảng mã và UNICODE.
Bảng mã chuẩn
Bộ mã được hỗ trợ trong java được đưa ra dưới đây.
US-ASCII - Bảy ký tự ASCII bit.
ISO-8859-1 - Bảng chữ cái Latinh ISO.
UTF-8 - Đây là định dạng chuyển đổi UCS 8 bit.
UTF-16BE - Đây là định dạng chuyển đổi UCS 16 bit với thứ tự byte cuối lớn.
UTF-16LE - Đây là phép biến đổi UCS 16 bit với thứ tự byte cuối ít.
UTF-16 - Định dạng chuyển đổi UCS 16 bit.
Các phương thức quan trọng của lớp Charset
forName() - Phương thức này tạo một đối tượng bộ mã cho tên bộ mã đã cho. Tên có thể là chuẩn hoặc bí danh.
displayName() - Phương thức này trả về tên chính tắc của tập ký tự đã cho.
canEncode() - Phương pháp này kiểm tra xem bộ mã đã cho có hỗ trợ mã hóa hay không.
decode() - Phương pháp này giải mã chuỗi của một bộ mã nhất định thành bộ đệm ký tự của bộ mã Unicode.
encode() - Phương thức này mã hóa bộ đệm ký tự unicode vào bộ đệm byte của bộ ký tự đã cho.
Thí dụ
Ví dụ sau minh họa các phương thức quan trọng của lớp 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();
}
}
Đầu ra
US-ASCII
Demo text for conversion.