2012-03-01 11 views
9

Mam trochę HTML, który zawiera kilka znaków znaków (€, ó, á). Dokument HTML jest zapisywany jako UTF-8 bez LM. Kiedy przeglądam stronę w przeglądarce, znaki znaków wydają się zastępowane kombinacjami znaków nieznajomych (â,¬, ό, Ã). Dopiero gdy zapisuję mój dokument HTML jako UTF-8 z LM, znaki będą wyświetlały się poprawnie.UTF-8 html bez LM wyświetla dziwne znaki

Naprawdę wolałbym nie uwzględniać BOM w moich plikach, ale czy ktokolwiek ma pojęcie, dlaczego może to zrobić? i sposób, aby to naprawić? (inne niż w tym BOM)

+1

Czy HTML identyfikuje się jako UTF-8-zakodowane? –

+0

Czy określono zestaw znaków w tagu 'meta'? –

+0

Czy zrobiłeś odpowiednie rzeczy z serwerem i metatagami, aby poinformować przeglądarkę, że zawartość jest w rzeczywistości UTF-8? –

Odpowiedz

14

Prawdopodobnie nie określasz prawidłowego zestawu znaków w pliku HTML. BOM (dzięki @Jukka) wysyła przeglądarkę do trybu UTF-.8; w przypadku jego braku, należy użyć innych środków, aby zadeklarować dokument UTF.8.

Jeśli masz dostęp do konfiguracji serwera, możesz się upewnić, że serwer nie wysyła błędnych informacji o zestawie znaków. Zobacz np. How to change the default encoding to UTF-8 for Apache?

Jeśli masz dostęp tylko do HTML, dodając ten meta tag w głowie twojego dokumentu powinno załatwić sprawę:

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

lub jako @Mathias zaznacza, nowy HTML 5

<meta charset="utf-8"> 

(obowiązuje tylko wtedy, gdy używasz dokumentu w formacie HTML 5, co do którego nie ma już dobrego argumentu, nawet jeśli nie używasz znaczników HTML 5).

+5

+1. W dzisiejszych czasach możesz użyć ''. (Jeśli nie używasz DOCTYPE HTML5 w 2012 r., Robisz to źle.) –

+0

@Mathias dobry punkt, dodany, dzięki –

+0

Objawy sugerują, że testowana przeglądarka faktycznie słucha BOM: najwyraźniej ani serwer nie sam dokument deklaruje kodowanie, zmuszając przeglądarkę do wnioskowania lub odgadnięcia kodowania; i wydaje się, że następnie przyjmuje LM jako wskazanie UTF-8, co ma doskonały sens (i w przypadku braku BOM, dane są przyjmowane jako iso-8859-1, windows-1252, lub coś podobnego, tłumacząc? ¬, Ó, Ã rzeczy). –

2

Wstaw <meta charset="utf-8"> w head.
Albo ustawić nagłówek Content-Type: text/html;charset=utf-8 na stronie serwera
Można też nie dodawać w .htaccess: AddDefaultCharset UTF-8 więcej informacji tutaj http://www.askapache.com/htaccess/setting-charset-in-htaccess.html

+0

Zwróć uwagę, że '' dotyczy tylko HTML5. W przypadku HTML4 i wcześniejszych należy użyć ''. –