09/10/2018, 23:29

Lỗi này từ database hay trình duyệt ?

Chào mọi người

Em viết code asp, db access khi upload lên server, dùng trình duyệt IE7, hoặc FileFox2.0 để hiển thị thì bị lỗi phông chữ được load ra từ cơ sở dữ liệu access.

- Nhưng em chọn lại View/Character Encoding/Windows-1252 thì hiển thị được phông tiếng việt bình thường.
- Nhưng khi tắt mở lại thì vẫn bị lỗi phông và filefox hiển thị mặc định : View/Character Encoding/Unicode(UTF-8)
(trên IE vẫn bị tương tự)
Cho em hỏi
1. Bị lỗi phông như thế là do cơ sở dữ liệu hay trình duyệt ?
2. Làm cách nào để firefox mỗi khi hiển thị lên thì mặc định là: View/Character Encoding/Windows-1252 ?
3. Hoặc có cách nào khác không ?

(Khi cập nhật vào db access thì dùng phông unicode và em dùng charset : windows-1252)

Xin được help
sacroyant viết 01:40 ngày 10/10/2018
Không có font unicode. Unicode là 1 bảng mã.

Để thiết lập bảng mã cho trình duyệt khi load trang web của bạn, thì sử dụng META tag :

<meta http-equiv="Content-Type" content="text/html; charset=Tên_Bảng_Mã">
anhsoft viết 01:42 ngày 10/10/2018
em đã dùng : <meta http-equiv="Content-Type" content="text/html; charset=Windows-1252"> rồi

Nhưng khi dùng FireFox (hoặc IE) mở trang web lên thì nó mặc định là: View/Character Encoding/Unicode(UTF-8) => không hiển thị ra tiếng việt

Cứ mỗi lần nhấp vào 1 link nào đó thì phải sửa lại :View/Character Encoding/Windows-1252 thì mất công quá

Anh có cách nào không ?
sacroyant viết 01:31 ngày 10/10/2018
Bạn thử viết trong phần đầu hồ sơ như thế này xem có được ko :

Code:
<% @CodePage = 65001 %>
<% Response.CodePage = 1252 %> 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
</head>

Với các ứng dụng web, Unicode là chuẩn. Bạn nên dùng bảng mã này. Có thể chuyển các bài viết đã sử dụng bảng mã khác trở về Unicode bằng 1 chương trình convert nào đó, hoặc làm online ở 1 trong các địa chỉ sau :

http://www2.thanhnien.com.vn/News/Se...et/default.htm
http://www.nld.com.vn/tools/webtools/WebOffice1.0.htm
KingsCat viết 01:40 ngày 10/10/2018
Quote Được gửi bởi anhsoft View Post
em đã dùng : <meta http-equiv="Content-Type" content="text/html; charset=Windows-1252"> rồi

Nhưng khi dùng FireFox (hoặc IE) mở trang web lên thì nó mặc định là: View/Character Encoding/Unicode(UTF-8) => không hiển thị ra tiếng việt

Cứ mỗi lần nhấp vào 1 link nào đó thì phải sửa lại :View/Character Encoding/Windows-1252 thì mất công quá

Anh có cách nào không ?
Cái thẻ meta đó chỉ để chỉ cho trình duyệt chọn Character Encoding thôi, nhưng mà trình duyệt bây giờ thông minh quá nên khi thấy có ký tự Unicode thì nó sẽ tự động chuyển thành UTF-8

Nếu trong CSDL dùng Unicode và dùng ASP (thường mọi ng hay viết <%=rs.Fields(i).Value%> hoặc <%Response.Write rs.Fields(i).Value%>) thì nên đặt luôn trong global.asa
Code:
Sub Session_OnStart()
     Session.CodePage=65001
End Sub
còn trong các trang asp thì đặt thẻ meta
Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
Nếu bạn vẫn muốn trung thành với charset=Windows-1252 thì không cần đặt Session.CodePage và dùng thẻ meta mặc định của asp là Window-1252
Nhưng phải dùng thêm Server.HTMLEncode khi write từ CSDL ra
<%=Server.HTMLEncode(rs.Fields(i).Value)%> hoặc <%Response.Write Server.HTMLEncode(rs.Fields(i).Value)%>

Thí nghiệm đã được kiểm chứng
Bài liên quan
0