• Chủ Nhật, 21/12/2003 17:08 (GMT+7)

    Câu hỏi :
    Tôi cần viết chương trình bằng Java để chuyển mã một String từ chuẩn ISO-8859-1 sang chuẩn UNICODE UTF-8, xin hỏi có thể dùng hàm nào của lớp nào của Java (JDK 1.4) để đạt được mục đích trên? Tài liệu nào nói về chuẩn ISO-8859-1 và cấu trúc bảng mã UNICODE UTF-8? Các font nào theo chuẩn ISO-8859-1 và chuẩn UNICODE?

    Trả lời :
     

    Bảng mã ISO-8859-1 tương tự như bảng mã Code Page 1252 được sử dụng phổ biến trên Windows và Linux. Đây là bảng mã đơn byte nghĩa là dùng 1 byte để miêu tả 1 điểm mã, kết quả là chỉ có thể miêu tả 256 mã ký tự khác nhau. Bạn có thể tìm đặc tả cụ thể về bảng mã ISO-8859-1 trên Internet (hay dùng trình Character Map của Windows để xem 1 font chữ Windows nào đó). Bảng mã Unicode là sự nới rộng của ISO-8859-1 trong đó 256 ký tự đầu của Unicode trùng với bảng mã ISO-8859-1, do đó chúng ta không cần phải chuyển mã văn bản từ ISO-8859-1 sang Unicode. Bạn có thể tìm đặc tả chi tiết về bảng mã Unicode trên Internet. Lưu ý rằng chỉ có 1 cách mã hóa ký tự ISO-8859-1 là dùng 1 byte miêu tả giá trị của mã một ký tự, còn Unicode có nhiều cách mã hóa khác nhau trong đó 2 cách mã hóa thường dùng trong thực tế là UTF-8 và UCS-2. Do đó chuyển mã từ ISO-8859-1 sang Unicode chẳng qua là chuyển phương pháp mã hóa ký tự, thí dụ muốn chuyển 1 chuỗi ISO-8859-1 sang Unicode dạng UCS-2, bạn chỉ cần đổi lần lượt từng byte ký tự ISO-8859-1 thành 2 byte (byte trọng số cao có giá trị 0). Còn chuyển 1 chuỗi ISO-8859-1 sang Unicode dạng UTF-8, bạn chỉ cần đổi lần lượt từng byte ký tự ISO-8859-1 thành chuỗi byte UTF-8 theo bản chuyển sau:

    00 - 7F ® 0xxxxxxx (giữ nguyên byte gốc)

    80 - FF ® 110000xx 10xxxxxx (chuyển thành 2 byte)

    Về nguyên tắc, nếu đã biết giải thuật giải quyết vấn đề thì bạn có thể dịch giải thuật ra source code của bất kỳ ngôn ngữ lập trình nào.

    Hiện các font chữ tích hợp sẵn trong Windows như Arial, Courier, Times New Roman đều hỗ trợ cả 2 bảng mã: ISO-8859-1 và Unicode (nhưng có thể không đầy đủ các ký tự Unicode). Ngoài ra nếu chỉ làm việc với tiếng Việt, bạn có thể dùng các font trong bộ GVSBK 2.1 (khoảng 180 font), các font này cũng hỗ trợ đồng thời 2 bảng mã ISO-8859-1 và Unicode tiếng Việt.

    Chuyên mục: Lập trình