vs

W celu zdefiniowania charset dla HTML5 Doctype, której notacji powinienem użyć?

  1. Krótki:

    <meta charset="utf-8" /> 
    
  2. Long:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
Author: h0ussni, 2011-01-15

7 answers

W HTML5 są równoważne. Użyj krótszego, łatwiej go zapamiętać i wpisać. Obsługa przeglądarki jest w porządku , ponieważ została zaprojektowana z myślą o kompatybilności wstecznej.

 988
Author: Quentin,
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
2012-03-23 07:14:28

Obie formy deklaracji meta charset są równoważne i powinny działać tak samo we wszystkich przeglądarkach. Jest jednak kilka rzeczy, o których musisz pamiętać deklarując swoje pliki WWW jako UTF-8:

  1. Zapisz swoje pliki w kodowaniu UTF-8 bez znaku byte-order (BOM).
  2. Zadeklaruj kodowanie w plikach HTML za pomocą meta charset (Jak wyżej).
  3. twój serwer WWWmusi służyć Twoim plikom, deklarując Kodowanie UTF-8 w nagłówku HTTP typu Content.

Serwery Apache są domyślnie skonfigurowane do obsługi plików w ISO-8859-1, więc musisz dodać następującą linię do pliku .htaccess:

AddDefaultCharset UTF-8

To skonfiguruje Apache do obsługi plików deklarujących kodowanie UTF-8 w nagłówku odpowiedzi typu Content, ale twoje pliki muszą być zapisane w UTF-8 (bez BOM).

Notatnik nie może zapisać plików w UTF-8 bez BOM. Darmowy edytor, który może być Notepad++. Na pasku Menu programu Wybierz "kodowanie > Koduj w UTF-8 bez BOM". Możesz również otwierać pliki i ponownie zapisywać je w UTF-8 za pomocą "kodowanie > Konwertuj na UTF-8 bez BOM".

Więcej na temat znaku kolejności bajtów (Bom) w Wikipedii.
 236
Author: CodeBoy,
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
2014-01-23 03:46:09

Innym powodem, dla którego warto użyć krótkiego jest to, że pasuje on do innych instancji, w których można określić zestaw znaków w znacznikach. Na przykład:

<script type="javascript" charset="UTF-8" src="/script.js"></script>

<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>

Spójność pomaga zmniejszyć liczbę błędów i uczynić kod bardziej czytelnym.

Zauważ, że atrybut charset jest niewrażliwy na wielkość liter. Można używać UTF-8 lub utf-8, jednak UTF-8 jest wyraźniejszy, bardziej czytelny, dokładniejszy.

Ponadto, nie ma absolutnie żadnego powodu, aby używać żadnej wartości innej niż UTF-8 w atrybucie meta charset lub nagłówek strony. UTF - 8 jest domyślnym kodowaniem dla dokumentów internetowych od HTML4 w 1999 roku i jedynym praktycznym sposobem tworzenia nowoczesnych stron internetowych.

Również nie powinieneś używać encji HTML w UTF-8. Znaki takie jak symbol praw autorskich powinny być wpisywane bezpośrednio. Jedyne encje, których powinieneś użyć, to 5 zarezerwowanych znaków znaczników: mniej niż, więcej niż, ampersand, prime, double prime. Encje potrzebują parsera HTML, którego nie zawsze będziesz chciał używać, wprowadzają błędy, dokonują Twój kod jest mniej czytelny, zwiększa rozmiar plików, a czasami dekoduje się nieprawidłowo w różnych przeglądarkach w zależności od tego, których elementów użyłeś. Dowiedz się, jak wpisywać / wstawiać prawa autorskie, znaki towarowe, otwarty cytat, Bliski cytat, apostrof, myślnik em, myślnik en, punktor, Euro i inne znaki, które napotkasz w swojej treści, i używaj tych rzeczywistych znaków w kodzie. Mac ma przeglądarkę znaków, którą można włączyć w Preferencjach systemowych klawiatury, a następnie można znaleźć, a następnie przeciągnąć i upuścić znaki, których potrzebujesz, lub użyj pasującej przeglądarki klawiatury, aby zobaczyć, które klawisze chcesz wpisać. Na przykład znakiem towarowym jest opcja+2. UTF-8 zawiera wszystkie znaki i symbole z każdego pisanego języka ludzkiego. Więc nie ma usprawiedliwienia dla używania -- zamiast em dash. Nie jest to zły pomysł, aby nauczyć się zasad interpunkcji i typografii również ... na przykład, wiedząc, że okres wchodzi w ścisły cytat, a nie na zewnątrz.

Używanie znacznika dla czegoś takiego jak content-type I encoding jest wysoce ironia losu, bo nie znając tych rzeczy, nie można przeanalizować pliku aby uzyskać wartość znacznika meta.

Nie, to nieprawda. Przeglądarka zaczyna analizować plik jako domyślne kodowanie przeglądarki, albo UTF-8 lub ISO-8859-1. Ponieważ US-ASCII jest podzbiorem zarówno ISO-8859-1 , jak i UTF-8, przeglądarka może odczytywać tak czy inaczej ... to jest to samo. Gdy przeglądarka napotka znacznik meta charset, jeśli kodowanie jest INNE niż to, co przeglądarka już przy użyciu, przeglądarka przeładowuje stronę w określonym kodowaniu. Dlatego umieszczamy znacznik meta charset na górze, tuż za znacznikiem head, przed czymkolwiek innym, nawet tytułem. W ten sposób możesz używać znaków UTF-8 w tytule.

Musisz zapisać swoje pliki w kodowaniu UTF-8 bez BOM

To nie jest do końca prawda. Jeśli masz tylko znaki US-ASCII w dokumencie, możesz zapisać go jako US-ASCII i podać jako UTF-8, ponieważ jest podzbiorem. Ale jeśli istnieją znaki Unicode, masz rację, musisz zapisać jako UTF-8 bez BOM.

Jeśli chcesz mieć dobry edytor tekstu, który zapisze Twoje pliki w UTF-8 polecam Notepad++.

[[3]} na komputerze Mac użyj Bare Bones Texttwrangler (bezpłatny) ze sklepu Mac App Store lub Bare Bones BBEdit, który jest w Mac App Store za $39.99 ... bardzo tanie jak na tak świetne narzędzie. W obu aplikacjach na dole okna dokumentu znajduje się menu, w którym określa się kodowanie dokumentu i można łatwo wybrać "UTF-8 no BOM". Oczywiście możesz ustawić to jako domyślne dla nowych dokumentów w preferencjach.

Ale jeśli serwer WWW obsługuje kodowanie w nagłówku HTTP, co jest zalecane, oba [meta tagi] są niepotrzebne.

To jest niepoprawne. Należy oczywiście ustawić kodowanie w nagłówku HTTP, ale należy również ustawić go w atrybutie meta charset, aby Strona mogła być zapisana przez użytkownika, z przeglądarki na lokalnej pamięci masowej, a następnie Otwarta ponownie później, w takim przypadku jedynym wskazaniem kodowania, które będzie obecne, jest atrybut meta charset. Z tego samego powodu powinieneś również ustawić tag podstawowy ... na serwerze znacznik bazowy jest niepotrzebny, ale po otwarciu z magazynu lokalnego znacznik bazowy umożliwia działanie strony tak, jakby znajdowała się na serwerze, z wszystkimi zasobami na miejscu i tak dalej, bez uszkodzonych łączy.

AddDefaultCharset UTF-8

Lub możesz po prostu zmienić kodowanie poszczególnych typów plików tak:

AddType text/html;charset=utf-8 html

Wskazówka do obsługi zarówno plików UTF-8, jak i plików Latin-1 (ISO-8859-1) polega na nadaniu plikom UTF-8 rozszerzenia "tekstowego" i plików Latin-1 "txt."

AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text

Na koniec rozważ zapisywanie dokumentów z zakończeniami linii Uniksa, a nie starszymi zakończeniami linii DOS lub (klasycznymi) Mac, które nie pomagają i mogą zaszkodzić, szczególnie w miarę oddalania się od tych starszych systemów. Dokument HTML z poprawnym kodowaniem HTML5, UTF-8 i zakończeniami linii Unix jest dobrze wykonaną pracą. Ty może udostępniać i edytować, przechowywać, odczytywać i odzyskiwać oraz polegać na tym dokumencie w wielu kontekstach. To lingua franca. To cyfrowy papier.

 79
Author: Simon White,
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-03-05 11:41:25

<meta charset="utf-8"> został wprowadzony z / dla HTML5.

Jak wspomniano w dokumentacji, oba są ważne. Jednak <meta charset="utf-8"> jest tylko dla HTML5 (i łatwiejsze do wpisania/zapamiętania).

W odpowiednim czasie stary styl z pewnością stanie się przestarzały w niedalekiej przyszłości. Zostałbym przy Nowym <meta charset="utf-8">.

jest tylko jeden sposób, ale do góry. W przypadku tech, to jest wycofywanie starego (naprawdę, bardzo szybko)

Dokumentacja: Html Meta charset Atrybut-W3Schools

 29
Author: Omar,
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
2017-08-23 04:35:18

Nie kwestionując innych odpowiedzi, myślę, że warto wspomnieć, co następuje.

  1. zapis "długi" (http-equiv) i zapis "krótki"są równe, w zależności od tego, co nastąpi pierwsze;
  2. nagłówki serwera www nadpisują wszystkie znaczniki <meta>;
  3. BOM (Byte order mark) nadpisze Wszystko , a w wielu przypadkach wpłynie to na html 4 (i prawdopodobnie również inne rzeczy);
  4. Jeśli nie zadeklarujesz żadnego kodowania, prawdopodobnie dostaniesz swój tekst w " fallback text kodowanie", które jest zdefiniowane w przeglądarce. Ani w Firefoksie, ani w Chrome nie jest to utf-8;
  5. W przypadku braku innych wskazówek przeglądarka spróbuje odczytać twój dokument tak, jakby był w ASCII, aby uzyskać kodowanie, więc nie możesz używać żadnych dziwnych kodowań (utf-16 z BOM powinno wystarczyć);
  6. podczas gdy specyfikacje mówią, że deklaracja kodowania musi znajdować się w pierwszych 512 bajtach dokumentu, większość przeglądarek spróbuje odczytać więcej niż to.

Możesz przetestować uruchamiając echo 'HTTP/1.1 200 OK\r\nContent-type: text/html; charset=windows-1251\r\n\r\n\xef\xbb\xbf<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta charset="windows-1251"><title>привет</title></head><body>привет</body></html>' | nc -lp 4500 i wskazywanie przeglądarki na localhost:4500. (Oczywiście będziesz chciał zmienić lub usunąć części. Częścią BOM jest \xef\xbb\xbf. Uważaj na kodowanie swojej powłoki.)

Proszę pamiętać, że bardzo ważne jest, aby jawnie zadeklarować kodowanie. Pozwalanie przeglądarkom zgadywać może prowadzić do problemów z bezpieczeństwem.

 17
Author: squirrel,
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
2016-10-14 17:07:37

Użyj <meta charset="utf-8" /> dla przeglądarek internetowych podczas korzystania z HTML5.

Użyj <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Podczas korzystania z HTML4 lub XHTML, lub dla przestarzałych parserów dom, takich jak DOMDocument w php

 10
Author: Timo Huovinen,
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
2015-11-26 08:08:31

Jest kilka newsów opartych na Mozilla Foundation i sitepoint

Nie używaj tej wartości (http-equiv=content-type), ponieważ jest ona przestarzała. Preferuje atrybut charset w elemencie meta>. Tutaj wpisz opis obrazka

 0
Author: user10089632,
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
2018-02-26 16:51:11