Danh mục tài liệu

Dùng Unicode chữ Việt trong ISO 10646

Số trang: 10      Loại file: pdf      Dung lượng: 308.66 KB      Lượt xem: 18      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

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,
Nội dung trích xuất từ tài liệu:
Dùng Unicode chữ Việt trong ISO 10646 Dùng Unicode chữ Việt trong .NET Căn bản Unicode chữ Việt ISO 10646 và UnicodeISO (International Standard Organisation) 10646 là tiêu chuẩnquốc tế nhằm cung ứng đủ số ký tự để dùng cho mọi chữ của tất cả ngônngữ trên thế giới. Thay vì dùng 8 bits để biểu diễn chỉ 255 dấu hiệu, bâygiờ người ta dùng đến 16 bits để có thể biểu diễn đến trên 65000 dấuhiệ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ộtlú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 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ểmcủa tiêu chuẩn nầy là sự cố gắng để xáp nhập các tiêu chuẩn 8 bit có sẵnđể không cần phải thay đổi chúng. Thật ra ISO 10646 là tiêu chuẩn quốctế chính thức, còn Unicode thì được Unicode Consortium (tập hợp đạidiệ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ợcgọ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ần1, 2, 3 hay 4 bytes .v.v., mỗi byte dùng cho code point người ta không gọilà byte hay octet, mà lại gọi là code unit. Thỉnh thoảng, Unicode đượccập nhật hóa, và ấn bản mới nhất hiện giờ là 3.1.1.ISO 10646 định nghĩahai bộ CCS (Coded Character Sets), UCS-2 và UCS-4. UCS-2 dùng 16bits và là một phần nhỏ (subset) của UCS-4.UCS-4 là một CCS dùng31bits, 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ínhUCS-2. Nó còn đuợc gọi là BMP (Basic Multilingual Plane). Code pointstrong 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 đến u+007E thì giống như ASCII và các characters trongkhoảng từ u+00A0 đến u+00FF thì giống như ISO 8859-1. Do đó rấtdễ cho ta hoán chuyển giữa ASCII hay ISO 8859-1 với UCS. Unicode(version 3.0.1) thì dùng 20bit subset của UCS-4 làm Coded Character Set.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ữ UnicodeTransformation Format.UTF-16UTF-16 là một cách encoding dùng 20bit Unicode. Các characters trongBMP được diễn tả bằng cách dùng giá trị 16bit của code point trongUnicode CCS. Có hai cách để viết 16bit value trong một dòng (stream) 8bit. Có lẽ bạn đã nghe qua chữ endian. Big Endian có nghĩa là cho MostSignificant Byte đi trước, tức là nằm bên trái - do đó ta có UTF-16BE. CònLittle 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ủa con số Hex1234 được viết làHex12 Hex34 trong big endian và Hex34 Hex12 trong littleendian.Những characters không nằm trong BMP đuợc biểu diễn bằng cáchdùng surrogate 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ó 20 bits được phân ra làm hai nhóm 10 bits. Nhóm MostSignificant 10 bits đuợc mapped vào một giá trị 10bit nằm trong khoảng từu+D800 đến u+DBFF. Nhóm Least Significant 10 bits đuợc mapped vàomộ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ững characters 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ế choupward-compatible vớ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-16qua 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ểnqua bên phải của UTF-8 theo cùng một màu như chỉ dẫn. Ta hãy thử lấythí 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 quabài Hệ 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 10101010 0011 E 1 B AA 3UTF-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??????? ???????? ???????? 1111110? 10?????? 10?????? 10?????????????? 10?????? 10??????Trong chữ Việt, chúng ta chỉ làm việc với một số tương đối ít Unicode codepoints ( tổng cộng 134 ký tự) và UTF-8, bạn có thể hoặc dùng một Look-up table dựa theo Bản đối chiếu, hoặc dùng hai Functions ToUTF8 vàToUTF16 với Listings như dưới đây để hoán chuyển từ encoding UTF-16ra UTF-8, và ngược lại:Function ToUTF8(ByVal UTF16 As Long) As Byte() Convert a 16bit UTF-16BE to 2 or 3 UTF-8 bytes Dim bArray() As Byte If UTF16 < &H80 Then ReDim bArray(0) one byte UTF-8 bArray(0) = UTF16 Use number as is ElseIf UTF16 < &H800 Then ReDim bArray(1) two byte UTF-8 bArray(1) = &H80 + (UTF16 And &H3F) LeastSignificant 6 bits UTF16 = UTF16 \ &H40 ...

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

Tài liệu có liên quan: