CHƯƠNG 5 : KỊCH BẢN TRÌNH CHỦ
5.6 Sửdụng tiếng Việt trong ASP
5.6.1 Bảng mã Unicode
Về cơ bản máy tính chỉ xử lý được dữ liệu dạng số. Mỗi ký tự (character) được máy tính lưu trữ và xử lý bằng cách ánh xạ chúng thành một chữ số (còn gọi là mã - code).
Ví dụ thơng thường chữ ‘A’ có mã 65, ‘a’ mã 97… Bảng ánh xạ các ký tự thành các mã dưới dạng số được gọi là bảng mã (character code).
Bảng mã 1 byte: Trong các bảng mã 1 byte như ASCII, mỗi ký tựđược biểu diễn bằng
1 byte. Chúng có thể biểu diến tối đa 256 ký tự (kể cả các ký tự hiển thị được và ký tự điều khiển). Bảng mã 1 byte chỉ thích hợp với những ngôn ngữ như tiếng Anh. Đối với các ngôn ngữ phức tạp như tiếng Hoa, tiếng Nhật, tiếng Việt thì bảng mã này khơng đủ lớn để có thể biểu diễn hết số ký tự cần thiết. Vì vậy, người ta phải thực hiện nhiều giải pháp để khắc phục thiếu sót này, dẫn đến tình trạng có nhiều bảng mã khác nhau cùng tồn tại, thậm chí 1 ngơn ngữ cũng có nhiều bảng mã, gây nên sự thiếu thống nhất.
Unicode là bảng mã 2 byte, ra đời nhằm mục đích xây dựng một bộ mã chuẩn vạn năng, thống nhất, dùng chung cho tất cả các ngôn ngữ trên thế giới. Bộ mã Unicode gồm 16 bit cho mỗi ký tự, biểu diễn được 65536 ký tự. Unicode có thể biểu diễn được đầy đủ các ký tự Tiếng Việt.
5.6.2 Mã hóa UTF-8
Mỗi ký tự trong bộ mã Unicode được mã hóa (encoding) dưới 1 trong 3 dạng: UTF-8 (8 bit), UTF-16 (16 bit) và UTF-32 (32 bit). Trong đó UTF-8 (Unicode Transfomation Format -8) được sử dụng phổ biến. Mỗi ký tự Unicode được mã hóa UTF-8 sẽđược biểu diễn bằng 1 đến 4 byte tùy thuộc vào giá trị mã của ký tự đó.
Ví dụ: trong bảng mã Unicode chữ a có mã là 97 (hexa là U+0061) UTF 32: 0x00000061, UTF-16: 0x0061, UTF-8: 0x61.
UTF-8 được sử dụng phổ biến để biểu diễn tiếng Việt theo mã Unicode
5.6.3 CodePage và Charset
Trong lập trình ASP, để biểu diễn tiếng Việt đúng theo encoding UTF-8, chúng ta cần lưu ý 2 điểm:
Hiển thị đúng font UTF-8 trên client (browser) bằng cách sử dụng thẻ
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> (charset giúp browser hiển thị (decode) đúng dạng dữ liệu được encode)
Xử lý đúng UTF-8 trên server bằng cách đặt thuộc tính Codepage = 65001
(code page giúp server xử lý dữ liệu đúng encoding) <%Response.codepage=65001%>
hoặc
Session.codepage có thiết lập codepage cho tồn phiên. Cịn Response.codepage thiết lập codepage cho 1 lần response thôi. Thông thường chúng ta sử dụng Session.codepage vì như vậy tồn bộ session sẽ có chung 1 codepage thống nhất.