2012-03-01 26 views
9

Tôi có một số HTML có chứa một số ký tự forign (€, ó, á). Tài liệu HTML được lưu dưới dạng UTF-8 không có BOM. Khi tôi xem trang trong trình duyệt, các ký tự forign dường như được thay thế bằng các kết hợp ký tự lạ (‚¬, ó, Ã). Chỉ khi tôi lưu tài liệu HTML của mình là UTF-8 với BOM thì các ký tự đó sẽ hiển thị chính xác.UTF-8 html không có BOM hiển thị các ký tự lạ

Tôi thực sự không muốn bao gồm BOM trong các tệp của mình, nhưng có ai có bất kỳ ý tưởng nào tại sao nó có thể thực hiện việc này không? và một cách để sửa chữa nó? (không bao gồm BOM)

+1

Liệu HTML tự coi mình là UTF-8 mã hóa? –

+0

Bạn đã chỉ định bộ ký tự trong thẻ 'meta' chưa? –

+0

Bạn có thực hiện những điều thích hợp với máy chủ và thẻ meta của mình để thông báo cho trình duyệt rằng nội dung trên thực tế là UTF-8 không? –

Trả lời

14

Có thể bạn không chỉ định đúng bộ ký tự trong tệp HTML của mình. BOM (nhờ @Jukka) gửi trình duyệt sang chế độ UTF-.8; khi vắng mặt, bạn cần sử dụng các phương tiện khác để khai báo tài liệu UTF.8.

Nếu bạn có quyền truy cập vào cấu hình máy chủ của mình, bạn có thể muốn đảm bảo máy chủ không gửi thông tin bộ ký tự sai. Xem ví dụ How to change the default encoding to UTF-8 for Apache?

Nếu bạn có quyền truy cập chỉ sang HTML của bạn, thêm thẻ meta này trong đầu của tài liệu nên làm các trick:

<meta http-equiv='Content-Type' content='Type=text/html; charset=utf-8'> 

hoặc như @Mathias chỉ ra, HTML 5 mới

<meta charset="utf-8"> 

(chỉ hợp lệ nếu bạn sử dụng loại tài liệu HTML 5, mà không có đối số tốt nào nữa ngay cả khi bạn không sử dụng đánh dấu HTML 5.)

+5

+1. Ngày nay bạn chỉ có thể sử dụng ''. (Nếu bạn không sử dụng HTML5 DOCTYPE vào năm 2012, bạn đang làm sai.) –

+0

@Mathias điểm tốt, được thêm vào, cảm ơn –

+0

Các triệu chứng cho thấy trình duyệt thử nghiệm thực sự lắng nghe BOM: rõ ràng không phải máy chủ không phải là tài liệu tự khai báo mã hóa, buộc trình duyệt phỏng đoán hoặc đoán mã hóa; và có vẻ như sau đó nó có một BOM như chỉ ra UTF-8, mà làm cho cảm giác hoàn hảo (và trong trường hợp không có BOM, dữ liệu được thực hiện như iso-8859-1, windows-1252, hoặc một cái gì đó tương tự, giải thích â 'â ¬, ó, à thứ). –

2

Chèn <meta charset="utf-8"> trong head.
Hoặc đặt tiêu đề Content-Type: text/html;charset=utf-8 trên server-side
Bạn cũng có thể làm thêm trong .htaccess: AddDefaultCharset UTF-8 biết thêm đây http://www.askapache.com/htaccess/setting-charset-in-htaccess.html

+0

Lưu ý rằng '' chỉ dành cho HTML5. Đối với HTML4 trở về trước, hãy sử dụng '' thay thế. –

Các vấn đề liên quan