Wyświetlanie symboli unicode w HTML
Chcę po prostu wyświetlić symbole tick ( ✔ ) i cross ( ✘ ) na stronie HTML, ale pokazuje się jako pudełko lub goop ✠" - oczywiście coś wspólnego z kodowaniem.
Ustawiłem meta tag, aby pokazywał utf-8, ale oczywiście czegoś mi brakuje.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Edit / Solution: z komentarzy, przy użyciu FireBug znalazłem nagłówki przekazywane przez moją stronę były w rzeczywistości "Content-Type: text / html", a nie UTF-8. Patrząc na format pliku za pomocą Notepad++ okazało się, że mój plik był sformatowany jako "UTF-8 bez BOM". Zmieniając to na tylko UTF-8 symbole są teraz poprawnie wyświetlane... ale firebug nadal wydaje się wskazywać ten sam typ zawartości.
5 answers
Należy upewnić się, że nagłówki serwera HTTP są poprawne.
W szczególności nagłówek:
Content-Type: text/html; charset=utf-8
Powinny być obecne.
Meta tag jest ignorowany przez przeglądarki, jeśli nagłówek HTTP jest obecny.
Upewnij się również, że Twój plik jest rzeczywiście zakodowany jako UTF-8 przed jego podaniem, sprawdź/spróbuj:
- upewnij się, że edytor zapisze go jako UTF-8.
- upewnij się, że Twój FTP lub jakikolwiek program do przesyłania plików nie zadziera z plikiem.
- Spróbuj z HTML encoded entities, like
&#uuu;
. - aby być naprawdę pewnym, zrzut heksowy pliku i wygląd jako znak, dla✔, powinno być E2 9C 94 .
Uwaga: Jeśli używasz znaku unicode, dla którego system nie może znaleźć glifu (brak czcionki z tym znakiem), twoja przeglądarka powinna wyświetlić znak zapytania lub jakiś symbol podobny do bloku. Ale jeśli widzisz wiele znaków rzymskich, jak to robisz, oznacza to problem z kodowaniem.
Wiem, że odpowiedź została już zaakceptowana, ale chciałem zwrócić uwagę na kilka rzeczy.
Ustawienie content-type
i charset
jest oczywiście dobrą praktyką, robienie tego na serwerze jest znacznie lepsze, ponieważ zapewnia spójność całej aplikacji.
Jednak używałbym UTF-8
tylko wtedy, gdy język mojej aplikacji używa wielu znaków, które są dostępne tylko w zestawie znaków UTF-8
. Jeśli chcesz pokazać znak lub symbol unicode w jednym z przypadków, możesz to zrobić bez Zmiana charset
Twojej strony.
HTML
renderery zawsze były w stanie wyświetlać symbole, które nie są częścią zestawu znaków kodowania strony, o ile wspomnisz o symbolu w numeric character reference (NCR)
. Brzmi dziwnie, ale to prawda.
Tak więc, nawet jeśli twój html
ma nagłówek, który stwierdza, że ma kodowanie ansi
lub któregokolwiek z zestawów znaków iso
, możesz wyświetlić znacznik wyboru, używając jego odwołania do znaku html, w dziesiętnym - ✓ lub w hex - ✓
Więc to trochę trudne do zrozum, dlaczego masz do czynienia z tym problemem na swoich stronach. Czy można sprawdzić, czy wartość NCR jest poprawna, jest to dobre odniesienie http://www.fileformat.info/info/unicode/char/2713/index.htm
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-06 02:13:31
Upewnij się, że plik został zapisany jako UTF-8, alternatywnie użyj encji HTML (&#nnn;
) dla znaków specjalnych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-08 13:51:20
W przeciwieństwie do zaproponowanego przez Nicolasa, znacznik meta
nie jest w rzeczywistości ignorowany przez przeglądarki. Jednak nagłówek HTTP Content-Type
zawsze ma pierwszeństwo przed obecnością znacznika meta
w dokumencie.
Więc upewnij się, że albo wysyłasz poprawne kodowanie przez nagłówek HTTP, albo nie wysyłasz tego nagłówka HTTP w ogóle (niezalecane). Znacznik meta
jest głównie opcją awaryjną dla dokumentów lokalnych, które nie są wysyłane przez ruch HTTP.
Używanie encji HTML powinno być również uważane za obejście-czyli obejście prawdziwego problemu. Prawidłowa konfiguracja serwera www zapobiega wielu uciążliwościom.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-08 13:55:05
Myślę, że to jest problem z plikiem, po prostu zapisałeś swój plik w 1-bajtowym kodowaniu, jak latin-1. Google up your editor i jak ustawić pliki na utf-8.
Zastanawiam się, dlaczego istnieją edytory, które nie domyślają się utf-8.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-08 13:59:10