Danh mục

Dùng Unicode chữ Việt trong .NET Căn bản Unicode chữ Việt ISO 10646 và Unicode ISO

Số trang: 10      Loại file: pdf      Dung lượng: 316.89 KB      Lượt xem: 7      Lượt tải: 0    
tailieu_vip

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

ISO (International Standard Organisation) 10646 là tiêu chuẩn quốc tế nhằm cung ứng đủ số ký tự để dùng cho mọi chữ của tất cả ngôn ngữ trên thế giới. Thay vì dùng 8 bits để biểu diễn chỉ 255 dấu hiệu, bây giờ người ta dùng đến 16 bits để có thể biểu diễn đến trên 65000 dấu hiệu. Hãy tưởng tượng một bài viết có thể chứa nhiều ngôn ngữ cùng một lúc. Hay môt chương trình hiển thị các đề mục bằng ngôn ngữ địa phương, vì khi chương trình khởi động nó nhận diện ra...
Nội dung trích xuất từ tài liệu:
Dùng Unicode chữ Việt trong .NET Căn bản Unicode chữ Việt ISO 10646 và Unicode ISO Dùng Unicode chữ Việt trong .NETCăn bản Unicode chữ ViệtISO 10646 và UnicodeISO (International Standard Organisation) 10646 là tiêu chuẩn quốc tếnhằm cung ứng đủ số ký tự để dùng cho mọi chữ của tất cả ngôn ngữ trên thếgiới. Thay vì dùng 8 bits để biểu diễn chỉ 255 dấu hiệu, bây giờ người ta dùngđến 16 bits để có thể biểu diễn đến trên 65000 dấu hiệu.Hãy tưởng tượng một bài viết có thể chứa nhiều ngôn ngữ cùng một lúc. Haymôt chương trình hiển thị các đề mục bằng ngôn ngữ địa phương, vì khi chươngtrình khởi động nó nhận diện ra ngay là nó đang đuợc chạy ở xứ nào bằng cáchđọc Locale từ Windows .Một trong những ưu điểm của tiêu chuẩn nầy là sự cố gắng để xáp nhập các tiêuchuẩn 8 bit có sẵn để không cần phải thay đổi chúng. Thật ra ISO 10646 là tiêuchuẩn quốc tế chính thức, còn Unicode thì được Unicode Consortium (tập hợpđại diện các công ty Tin Học lớn) soạn ra. Nhưng cả hai tiêu chuẩn gần như yhệt nhau khi nói đến con số dùng để biểu diễn một chữ, con số nầy đuợc gọi làcode point. Thí dụ như code point của chữ ả là 1EA3, của chữ ơ là 01A1. Ðểbiểu diễn một code point, tùy theo cách encoding, có khi ta cần 1, 2, 3 hay 4bytes .v.v., mỗi byte dùng cho code point người ta không gọi là byte hay octet,mà lại gọi là code unit. Thỉnh thoảng, Unicode được cập nhật hóa, và ấn bảnmới nhất hiện giờ là 3.1.1.ISO 10646 định nghĩa hai bộ CCS (Coded Character Sets), UCS-2 và UCS-4.UCS-2 dùng 16 bits và là một phần nhỏ (subset) của UCS-4.UCS-4 là một CCS dùng 31bits, chia thành 4 nhóm như sau:7 bits 8 bits 8 bits 8 bits1111111 11111111 11111111 11111111Group Plane Row CellCái Plane đầu tiên của UCS-4 với giá trị Group=0, Plane=0 cũng là chính UCS-2.Nó còn đuợc gọi là BMP (Basic Multilingual Plane).Code points trong UCS thường được viết dưới dạng u+????, mà ???? là con sốhexadecimal của code point. Characters có giá trị trong khoảng từ u+0021 đếnu+007E thì giống như ASCII và các characters trong khoảng từ u+00A0 đếnu+00FF thì giống như ISO 8859-1. Do đó rất dễ cho ta hoán chuyển giữaASCII hay ISO 8859-1 với UCS.Unicode (version 3.0.1) thì dùng 20bit subset của UCS-4 làm Coded CharacterSet.Những Character Encoding SchemesCó vài Character Encoding Schemes được đưa ra dùng: đó là UTF-8, UTF-16,UTF-16LE, và UTF-16BE. UTF là viết tắt chữ Unicode TransformationFormat.UTF-16UTF-16 là một cách encoding dùng 20bit Unicode. Các characters trong BMPđược diễn tả bằng cách dùng giá trị 16bit của code point trong Unicode CCS. Cóhai cách để viết 16bit value trong một dòng (stream) 8bit . Có lẽ bạn đã nghequa chữ endian. Big Endian có nghĩa là cho Most Significant Byte đi trước, tứclà nằm bên trái - do đó ta có UTF-16BE. Còn Little Endian thì ngược lại, tức làLeast Significant Byte đi trước - do đó ta có UTF-16LE. Thí dụ, giá trị 16bit củacon số Hex1234 được viết là Hex12 Hex34 trong big endian và Hex34Hex12 trong little endian.Những characters không nằm trong BMP đuợc biểu diễn bằng cách dùngsurrogate pair (cặp thay thế). Code points có giá trị từ u+D800 đến u+DFFFđược dành riêng ra để dùng cho mục đích nầy. Trước hết, một code point có 20bits được phân ra làm hai nhóm 10 bits. Nhóm Most Significant 10 bits đuợcmapped vào một giá trị 10bit nằm trong khoảng từ u+D800 đến u+DBFF. NhómLeast Significant 10 bits đuợc mapped vào một giá trị 10bit nằm trong khoảng từu+DC00 đến u+DFFF. Theo cách đó UTF-16 có thể biểu diễn được nhữngcharacters Unicode có 20bits.UTF-8UTF-8 là một cách encoding để có tác dụng y như UCS-4 (cũng là UTF-16), chớkhông phải có code point nào khác. UTF-8 được thiết kế cho upward-compatiblevới ASCII. UTF-8 không phải là chỉ dùng một byte, nhưng là dùng nhiều bytes -từ 1 đến 6 bytes.Cách hoán chuyển UTF-16 qua UTF-8 và ngược lại đuợc làm theo bảng dưới đây.Trong Table dưới đây, những binary (Nhị phân) bits nằm bên trái của UTF-16đuợc chuyển qua bên phải của UTF-8 theo cùng một màu như chỉ dẫn. Ta hãythử lấy thí dụ chữ ả với code point, hay UTF-16, 1EA3. UTF-8 bytes của nó làE1BAA3. Nếu bạn chưa quen cách dùng số nhị phân hay Hex hãy đọc qua bàiHệ thống số nhị phân. UCS-4 (UTF-16) UTF-8 1 E A 3 1110 ???? 10?? ???? 10?? ???? 0001 1110 1010 0011 1110 0001 1011 1010 1010 0011 E 1 B A A 3 UTF-16 (Nhị phân) UTF-8 (Nhị phân)00000000 00000000 00000000 0??????? 0???????00000000 00000000 00000??? ???????? 110????? 10??????00000000 00000000 ???????? ???????? 1110???? 10?????? 10??????00000000 000????? ???????? ???????? 11110??? 10?????? 10?????? 10??????000000?? ???????? ???????? ???????? 111110?? 10?????? 10?????? 10?????? 10??????0??????? ???? ...

Tài liệu được xem nhiều:

Gợi ý tài liệu liên quan: