Sử dụng tiếng Việt trong ASP
Tue Feb 26, 2013 5:52 pm
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.
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
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ẻ ( 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=65001%>
Session.codepage có thiết lập codepage cho toà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 toàn bộ session sẽ có chung 1 codepage thống nhất.
Lập trình tiếng Việt với ASP:
Chúng ta tuân theo nguyên tắc sau:
Sử dụng UTF-8 charset cho các trang web
Sử dụng thẻ <%session.codepage=65001%>
Sử dụng kiểu gõ Unicode trong các bộ gõ (VietKey, Unikey)
Ví dụ sau minh họa việc thêm vào và hiển thị dữ liệu từ database ra màn hình với Tiếng Việt:
Trang RegistrationVNmeseForm.html
Trang RegistrationVNmeseProcess.asp
Trang ListMemberVNmese.asp
SinhvienIT
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.
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
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ẻ ( 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=65001%>
Session.codepage có thiết lập codepage cho toà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 toàn bộ session sẽ có chung 1 codepage thống nhất.
Lập trình tiếng Việt với ASP:
Chúng ta tuân theo nguyên tắc sau:
Sử dụng UTF-8 charset cho các trang web
Sử dụng thẻ <%session.codepage=65001%>
Sử dụng kiểu gõ Unicode trong các bộ gõ (VietKey, Unikey)
Ví dụ sau minh họa việc thêm vào và hiển thị dữ liệu từ database ra màn hình với Tiếng Việt:
Trang RegistrationVNmeseForm.html
- Code:
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form method="POST" action="RegistrationVNmeseProcess.asp">
<p> Username: <input type="text" name="username"></p>
<p> Password:<input type="text" name="password"></p>
<p> Confirm Password:<input type="text" name="ConfirmPassword">
</p>
<p> Address:<input type="text" name="address"></p>
<p><input type="submit" value="Submit" name="B1"></p>
</form>
</body></html>
Trang RegistrationVNmeseProcess.asp
- Code:
<%session.codepage=65001%>
<!--#include file ="Connection.asp"-->
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%username=request.form("username")
password=request.form("password")
confirmPassword=request.form("confirmPassword")
address=request.form("address")
‘ validate some information retrieved from submitted form
openConn
sql="insert into tblUser([username],[password],[address])
values('"&username&"','"&password&"','"&address&"')"
conn.execute sql
destroyConn
response.write "Successfull Registration!"%>
</body></html>
Trang ListMemberVNmese.asp
- Code:
<!--#include file ="Connection.asp"-->
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-
8"></head>
<%'if session("username")="" then response.redirect "LoginForm.html"%>
<%openConn
set rs = server.createobject("ADODB.Recordset")
rs.open "select * from tblUser", conn%>
<table border="1" width="200">
<tr><td>ID</td><td>Username</td><td>Address</td><td>Edit</td><t
d>Delete</td></tr>
<% do while not rs.EOF
link1 = "EditMemberForm.asp?id=" & rs("id")
link2 = "DeleteMember.asp?id=" & rs("id")%>
<tr><td><%=rs("id")%></td><td><%=rs("username")%></td><td><%
=rs("address")%></td><td><a
href="<%=link1%>">Edit</a></td><td><a
href="<%=link2%>">Delete</a></td>
</tr>
<% rs.movenext
loop
rs.close
destroyConn%>
</table>
SinhvienIT
Permissions in this forum:
Bạn không có quyền trả lời bài viết