Welche Notation sollte ich verwenden, um den Zeichensatz für HTML5 Doctype zu definieren?
Kurz:
<meta charset="utf-8" />
Lang:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
In HTML5 sind sie gleichwertig. Verwenden Sie die kürzere Variante, sie ist leichter zu merken und einzugeben. Browser-Unterstützung ist in Ordnung, da es für Abwärtskompatibilität entwickelt wurde.
Beide Formen der meta charset-Deklaration sind gleichwertig und sollten in allen Browsern gleich funktionieren. Es gibt jedoch ein paar Dinge, die Sie beachten müssen, wenn Sie den Zeichensatz Ihrer Webdateien als UTF-8 deklarieren:
Apache-Server sind standardmäßig so konfiguriert, dass sie Dateien in ISO-8859-1 ausliefern, daher müssen Sie die folgende Zeile in Ihre .htaccess
-Datei einfügen:
AddDefaultCharset UTF-8
Dadurch wird Apache so konfiguriert, dass Ihre Dateien mit der Angabe der UTF-8-Kodierung im Content-Type-Antwort-Header ausgeliefert werden, aber Ihre Dateien müssen von Anfang an in UTF-8 (ohne BOM) gespeichert sein.
Notepad kann Ihre Dateien nicht in UTF-8 ohne BOM speichern. Ein kostenloser Editor, der das kann, ist Notepad++. Wählen Sie in der Menüleiste des Programms "Encoding > Encode in UTF-8 without BOM". Sie können Dateien auch öffnen und mit "Kodierung > In UTF-8 ohne BOM konvertieren" wieder in UTF-8 speichern.
Mehr über das Byte Order Mark (BOM) bei Wikipedia.
Ein weiterer Grund, sich für die kurze Variante zu entscheiden, ist die Tatsache, dass sie zu anderen Fällen passt, in denen Sie einen Zeichensatz im Markup angeben können. Zum Beispiel:
<script type="javascript" charset="UTF-8" src="/script.js"></script>
<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>
Konsistenz trägt dazu bei, Fehler zu reduzieren und den Code lesbarer zu machen.
Beachten Sie, dass das Attribut charset die Groß- und Kleinschreibung nicht berücksichtigt. Sie können UTF-8 oder utf-8 verwenden, aber UTF-8 ist klarer, lesbarer und genauer.
Außerdem gibt es überhaupt keinen Grund, einen anderen Wert als UTF-8 im Meta-Charset-Attribut oder im Seitenkopf zu verwenden. UTF-8 ist die Standardkodierung für Webdokumente seit HTML4 im Jahr 1999 und die einzige praktische Möglichkeit, moderne Webseiten zu erstellen.
Außerdem sollten Sie keine HTML-Entities in UTF-8 verwenden. Zeichen wie das Copyright-Symbol sollten direkt eingegeben werden. Die einzigen Entities, die Sie verwenden sollten, sind die 5 reservierten Auszeichnungszeichen: kleiner als, größer als, kaufmännisches Und, Primzahl, Doppelprimzahl. Entities benötigen einen HTML-Parser, den Sie in Zukunft vielleicht nicht immer verwenden möchten. Sie führen zu Fehlern, machen Ihren Code weniger lesbar, erhöhen die Dateigröße und werden manchmal in verschiedenen Browsern falsch decodiert, je nachdem, welche Entities Sie verwendet haben. Lernen Sie, wie Sie Copyright, Markenzeichen, offene und geschlossene Anführungszeichen, Apostrophe, Bindestriche, Aufzählungszeichen, Euro und andere Zeichen, die in Ihrem Inhalt vorkommen, einfügen und in Ihrem Code verwenden können. Der Mac verfügt über eine Zeichenanzeige, die Sie in den Systemeinstellungen für die Tastatur aktivieren können. Sie können dann die benötigten Zeichen suchen und per Drag & Drop einfügen oder die entsprechende Tastaturanzeige verwenden, um zu sehen, welche Tasten Sie eingeben müssen. Das Markenzeichen ist zum Beispiel Option+2. UTF-8 enthält alle Zeichen und Symbole aller menschlichen Schriftsprachen. Es gibt also keine Entschuldigung für die Verwendung von -- anstelle eines em-Bindestrichs. Es ist keine schlechte Idee, auch die Regeln der Zeichensetzung und Typografie zu lernen ... zum Beispiel zu wissen, dass ein Punkt in ein geschlossenes Anführungszeichen gehört, nicht außerhalb.
Die Verwendung eines <meta>-Tags für so etwas wie Content-Type und Encoding ist höchst Ironie des Schicksals, denn ohne diese Dinge zu kennen, könnte man die Datei nicht parsen um den Wert des Meta-Tags zu ermitteln.
Nein, das ist nicht wahr. Der Browser analysiert die Datei zunächst in der Standardkodierung des Browsers, entweder UTF-8 oder ISO-8859-1. Da US-ASCII eine Untermenge von ISO-8859-1 und UTF-8 ist, kann der Browser
so oder so lesen ... es ist dasselbe. Wenn der Browser auf das Meta-Charset-Tag stößt, lädt er die Seite in der angegebenen Kodierung neu, wenn die Kodierung sich von der unterscheidet, die der Browser bereits verwendet. Deshalb setzen wir den Meta-Charset-Tag ganz oben, direkt nach dem Head-Tag, vor allem anderen, sogar vor dem Titel. Auf diese Weise können Sie UTF-8-Zeichen in Ihrem Titel verwenden.Sie müssen Ihre Datei(en) in UTF-8-Kodierung ohne BOM speichern.
Das ist nicht unbedingt richtig. Wenn Ihr Dokument nur US-ASCII-Zeichen enthält, können Sie es als US-ASCII speichern und als UTF-8 ausgeben, da es sich um eine Untermenge handelt. Wenn jedoch Unicode-Zeichen enthalten sind, müssen Sie das Dokument als UTF-8 ohne BOM speichern, das ist richtig.
Wenn Sie einen guten Texteditor suchen, der Ihre Dateien in UTF-8 speichert, empfehle ich Notepad++.
Auf dem Mac können Sie Bare Bones TextWrangler (kostenlos) aus dem Mac App Store oder Bare Bones BBEdit verwenden, das im Mac App Store für 39,99 $ erhältlich ist ... sehr günstig für ein so großartiges Tool. In beiden Anwendungen gibt es ein Menü am unteren Rand des Dokumentfensters, in dem Sie die Kodierung des Dokuments festlegen können, und Sie können einfach "UTF-8 no BOM" wählen. Und natürlich können Sie dies in den Einstellungen als Standard für neue Dokumente festlegen.
Wenn Ihr Webserver jedoch die Kodierung im HTTP-Header angibt, was empfohlen wird, sind beide [Meta-Tags] überflüssig.
Das ist nicht korrekt. Natürlich sollten Sie die Kodierung im HTTP-Header angeben, aber Sie sollten sie auch im Meta-Charset-Attribut angeben, so dass die Seite vom Benutzer gespeichert, aus dem Browser in den lokalen Speicher verschoben und später wieder geöffnet werden kann, wobei die einzige Angabe der Kodierung das Meta-Charset-Attribut ist. Aus demselben Grund sollten Sie auch ein Base-Tag setzen ... auf dem Server ist das Base-Tag unnötig, aber wenn die Seite vom lokalen Speicher geöffnet wird, ermöglicht das Base-Tag, dass die Seite so funktioniert, als wäre sie auf dem Server, mit allen Assets an ihrem Platz und so weiter, ohne kaputte Links.
AddDefaultCharset UTF-8
Sie können auch einfach die Kodierung bestimmter Dateitypen wie folgt ändern:
AddType text/html;charset=utf-8 html
Ein Tipp, um sowohl UTF-8- als auch Latin-1-Dateien (ISO-8859-1) bereitzustellen, ist, den UTF-8-Dateien die Erweiterung "text" und den Latin-1-Dateien die Erweiterung "txt" zu geben.
AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text
Und schließlich sollten Sie Ihre Dokumente mit Unix-Zeilenenden speichern und nicht mit den alten DOS- oder (klassischen) Mac-Zeilenenden, die nicht hilfreich sind und sogar schaden können, vor allem, wenn wir uns immer weiter von diesen Altsystemen entfernen. Ein HTML-Dokument mit gültigem HTML5, UTF-8-Kodierung und Unix-Zeilenendungen ist eine gut gemachte Arbeit. Sie können dieses Dokument weitergeben, bearbeiten, speichern, lesen, wiederherstellen und sich in vielen Kontexten darauf verlassen. Es ist eine lingua franca. Es ist digitales Papier.