2012-10-18 29 views
11

Trên trang của tôi, văn bản ở giữa trên cùng («Trang web Internet» ») chứa E có dấu trọng âm trên máy tính của tôi xuất hiện dưới dạng dấu hỏi.E có dấu không hiển thị chính xác

Điều này mặc dù thực tế là tôi có bộ ký tự meta = "UTF-8" trong thẻ đầu và tệp PHP chứa văn bản xuất hiện dưới dạng UTF-8 khi được mở bằng Notepad ++.

Điều gì đang diễn ra sau đó?

+0

là máy chủ của bạn có đặt tiêu đề 'utf-8' không? – JKirchartz

+0

Vui lòng chỉ kiểm tra mã hóa tệp trong notepad ++ và đặt nó thành "Mã hóa bằng UTF-8". Tôi đã thay đổi mã hóa thành "UTF-8" trong nhật thực và vẫn không hiển thị các ký tự đặc biệt (như é). Vì vậy, tôi đã đi trước và kiểm tra mã hóa của tập tin đó trong notepad ++ và nó cho tôi thấy rằng mã hóa là UTF-8 ** WITHOUT BOM **. Vì vậy, tôi đã thay đổi nó thành UTF-8 và thay thế tập tin trong nhật thực và nó hoạt động. Nếu bạn làm theo cách đó, bạn thậm chí không cần đặt comeOnGetIt

Trả lời

0

Bạn có sử dụng mã ASCII/HTML cho các ký tự có dấu trọng âm không? Nếu không, here's a list of them. Tìm kiếm 'E cấp tính' và bạn nên viết mã cho ký tự đó (đó là & Eacute; (không có khoảng trống) tôi nghĩ). Lúc đầu, tôi nghĩ đó là phông chữ-gia đình bạn đang sử dụng nhưng tôi không nghĩ rằng đó là bởi vì tôi vô hiệu hóa tất cả các phong cách trong trình duyệt của tôi và họ vẫn xuất hiện như là dấu hỏi.

13

Trình duyệt hiển thị các thông số này khi không thể hiểu được các số đang đọc. UTF-8 là tự đồng bộ hóa. Không giống như các mã hóa ký tự nhiều byte khác, bạn luôn biết bạn đang ở đâu với UTF-8. Nếu bạn thấy một số 192-247, bạn biết bạn đang ở đầu một chuỗi nhiều byte. Nếu bạn thấy 128-191 bạn biết bạn đang ở giữa một. Không có nguy cơ thiếu số đầu tiên và làm xáo trộn phần còn lại của văn bản. Điều này có nghĩa là trong UTF-8, chuỗi 191 theo sau là 224 sẽ không bao giờ xảy ra tự nhiên, do đó trình duyệt không biết phải làm gì với nó và hiển thị thay thế.

Sử dụng sau trong thẻ đầu của bạn:

<meta charset="UTF-8"> 
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"> 

Xem: http://coding.smashingmagazine.com/2012/06/06/all-about-unicode-utf8-character-sets/

0

Trang không thực sự được mã hóa theo UTF-8, nó được mã hóa trong latin1. Bạn cần thực sự lưu các tệp mã nguồn bằng UTF-8 hoặc bằng cách khác, hãy đảm bảo chúng là đầu ra được mã hóa bằng UTF-8. Hiện tại bạn có một sự rạn nứt giữa những gì trang web yêu cầu được mã hóa và những gì nó được mã hóa thực sự.

1

Mặc dù bạn đang thông báo nội dung dưới dạng UTF-8 trong tiêu đề meta và HTTP, nó không phải là UTF-8 đang được gửi. Bạn có thể cần phải kiểm tra cài đặt PHP của bạn rằng nó thực sự xuất ra nội dung trong mã hóa chính xác. http://php.net/manual/en/mbstring.configuration.php.

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