Tiêu đề meta loại nội dung thông báo cho trình duyệt xử lý nội dung được gửi dưới dạng luồng văn bản được mã hóa UTF-8. Nó không đảm bảo rằng luồng được gửi thực sự là UTF-8. Để xử lý UTF-8 đúng, bạn cần phải làm 3 việc: -
- Đảm bảo nội dung tĩnh của bạn được lưu trong mã hóa tương thích UTF-8.
- Đảm bảo nội dung động của bạn được mã hóa thành UTF-8.
- Thông báo cho khách hàng rằng nội dung được mã hóa UTF-8.
khoản 1 đòi hỏi một trong hai mà bạn thực sự lưu file ASP như một UTF-8 mã hóa tập tin hay rằng tất cả các nội dung tĩnh của bạn trong file nằm trong phạm vi ký tự ASCII (0-127). Lưu ý nếu bạn lưu dưới dạng UTF-8 thì tất cả tập lệnh phía máy chủ của bạn phải sử dụng các ký tự trong phạm vi ký tự ASCII. Trong Visual Studio, bạn có thể làm như vậy bằng cách "Lưu tệp AS ..." và sau đó nhấp vào mũi tên nhỏ trên nút Lưu.
khoản 2 đòi hỏi tài sản Response.CodePage
được thiết lập để UTF-8 mã trang 65001, bạn có thể làm điều này trong mã hoặc bằng cách thêm thuộc tính CODEPAGE=65001
đến <%@ %>
tờ khai trên dòng đầu tiên của file ASP. Nếu bạn làm điều đó trong mã, bạn phải đặt nó trước khi bất kỳ cuộc gọi đến Response.Write
. VÀ: không sử dụng chr hoặc asc chức năng (đây là lỗi khi sử dụng 65001) nhưng sử dụng chrw và ascw thay thế.
Mục 3 yêu cầu tiêu đề Content-Type
chứa tiêu chuẩn charset=UTF-8
. Như bạn đã làm, bạn có thể làm điều này với tiêu đề META. Cá nhân tôi thấy rằng có một chút kludge, tôi thích sử dụng Response.Charset = "UTF-8"
trong mã. Việc này đặt vòng loại vào tiêu đề HTTP thực sự Content-Type
.
Cảm ơn rất nhiều! Nó làm việc cho tôi. Tôi chỉ cần thêm tập lệnh đó vào trang của tôi. Cảm ơn rất nhiều! Tôi không thể trả lời ngay lập tức 'Tôi không thể trực tuyến vào những ngày đó. Cảm ơn. – RedsDevils
Không phải là nó thú vị khi bạn nhận được một phiếu bầu lên một câu hỏi mà bạn đã trả lời cách đây 5 năm. – BenCr