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.

Author: Peter Craig, 2009-11-08

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.

 48
Author: ,
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 14:24:59

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

 14
Author: Akshay,
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.

 5
Author: Guffa,
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.

 4
Author: Konrad Rudolph,
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.

 0
Author: Kugel,
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