Frage gegen


Um charset zu definieren HTML5 Doctype, welche Notation sollte ich verwenden?

  1. Kurz:

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

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

1387
2018-01-14 22:06


Ursprung


Antworten:


In HTML5 sind sie gleichwertig. Verwenden Sie den kürzeren, es ist leichter zu merken und zu tippen. Browser-Unterstützung ist in Ordnung da es für Abwärtskompatibilität ausgelegt wurde.


978
2018-01-14 22:09



Beide Formen der Meta-Zeichensatz Deklaration sind gleichwertig und sollten in allen Browsern gleich funktionieren. Aber es gibt ein paar Dinge, die Sie beachten müssen, wenn Sie Ihren Web-Datei-Zeichensatz als UTF-8 deklarieren:

  1. Speichern Sie Ihre Datei (en) in UTF-8-Codierung ohne das Byte-Reihenfolge markieren (Stückliste).
  2. Deklarieren Sie die Codierung in Ihren HTML-Dateien mit Meta-Zeichensatz (wie oben).
  3. Dein Webserver Muss Dienen Sie Ihren Dateien und deklarieren Sie die UTF-8-Codierung im HTTP-Header Content-Type.

Apache-Server sind so konfiguriert, dass sie standardmäßig Dateien in ISO-8859-1 bereitstellen. Daher müssen Sie die folgende Zeile hinzufügen .htaccess Datei:

AddDefaultCharset UTF-8

Dadurch wird Apache so konfiguriert, dass er Ihre Dateien, die die UTF-8-Kodierung deklarieren, im Content-Type-Antwortheader, aber Ihren Dateien, bereitstellt Muss zu Beginn mit UTF-8 (ohne BOM) gespeichert werden.

Notepad kann Ihre Dateien in UTF-8 nicht ohne die Stückliste speichern. Ein freier Editor, der es kann Notizblock ++. Wählen Sie in der Programmmenüleiste "Encoding> Encode in UTF-8 ohne BOM". Sie können Dateien auch öffnen und in UTF-8 mit "Encoding> In UTF-8 ohne BOM konvertieren" speichern.

Mehr über die Byte Order Mark (BOM) bei Wikipedia.


236
2018-05-21 07:26



Ein weiterer Grund, mit dem kurzen zu gehen, ist, dass es anderen Instanzen entspricht, in denen Sie einen Zeichensatz in Markup angeben könnten. Beispielsweise:

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

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

Konsistenz hilft, Fehler zu reduzieren und Code lesbarer zu machen.

Beachten Sie, dass das Zeichensatzattribut die Groß- / Kleinschreibung nicht berücksichtigt. Sie können UTF-8 oder UTF-8 verwenden, UTF-8 ist jedoch klarer, lesbarer und genauer.

Außerdem gibt es absolut keinen Grund, einen anderen Wert als UTF-8 im Metazeichenattribut oder Seitenkopf zu verwenden. UTF-8 ist die Standardcodierung für Webdokumente seit HTML4 im Jahr 1999 und die einzige praktische Möglichkeit, moderne Webseiten zu erstellen.

Außerdem sollten Sie keine HTML-Entitäten in UTF-8 verwenden. Zeichen wie das Copyright-Symbol sollten direkt eingegeben werden. Die einzigen Entitäten, die Sie verwenden sollten, sind die 5 reservierten Markup-Zeichen: weniger als, mehr als, kaufmännisches Und-Zeichen, Strich, Doppelstrich. Entitäten benötigen einen HTML-Parser, den Sie vielleicht nicht immer verwenden möchten, sie führen zu Fehlern, machen Ihren Code weniger lesbar, erhöhen die Dateigröße und dekodieren manchmal in verschiedenen Browsern falsch, abhängig davon, welche Entitäten Sie verwendet haben. Weitere Informationen zum Eingeben / Einfügen von Copyright, Markenzeichen, Anführungszeichen, Anführungszeichen schließen, Apostroph, Bindestrich, Schlagwort, Aufzählungszeichen, Euro und allen anderen Zeichen, die Sie in Ihrem Content finden, sowie die tatsächlichen Zeichen in Ihrem Code. Der Mac verfügt über einen Zeichen-Viewer, den Sie in der Tastatur-Systemeinstellung aktivieren können. Sie können dann die benötigten Zeichen finden und ziehen und ablegen oder den entsprechenden Tastatur-Viewer verwenden, um zu sehen, welche Tasten Sie eingeben müssen. Beispiel: Marke ist Option + 2. UTF-8 enthält alle Zeichen und Symbole aus jeder geschriebenen menschlichen Sprache. Es gibt also keine Entschuldigung für die Verwendung - anstelle eines Em Dash. Es ist keine schlechte Idee, die Regeln der Zeichensetzung und Typografie zu lernen ... zum Beispiel zu wissen, dass eine Periode in ein enges Zitat fällt, nicht außerhalb.

Die Verwendung eines Tags für etwas wie Inhaltstyp und Codierung ist sehr hoch   ironisch, denn ohne diese Dinge zu kennen, konnte man die Datei nicht analysieren   um den Wert des Meta-Tags zu erhalten.

Nein, das ist nicht wahr. Der Browser beginnt mit der Analyse der Datei als Standardcodierung des Browsers, entweder UTF-8 oder ISO-8859-1. Da US-ASCII eine Untermenge von beiden ISO-8859-1 ist und UTF-8, der Browser kann in jeder Hinsicht gut lesen ... es ist das gleiche. Wenn der Browser das Meta-Zeichensatz-Tag erkennt, lädt der Browser die Seite in der angegebenen Codierung neu, wenn die Codierung sich von der unterscheidet, die der Browser bereits verwendet. Deshalb setzen wir den Meta-Zeichensatz-Tag ganz nach dem Kopf-Tag, vor allem anderen, sogar den Titel. Auf diese Weise können Sie UTF-8-Zeichen in Ihrem Titel verwenden.

Sie müssen Ihre Datei (en) in UTF-8-Codierung ohne BOM speichern

Das ist nicht streng richtig. Wenn Sie nur US-ASCII-Zeichen in Ihrem Dokument haben, können Sie es als US-ASCII speichern und es als UTF-8 bereitstellen, da es sich um eine Untermenge handelt. Wenn Unicode-Zeichen vorhanden sind, sind Sie richtig. Sie müssen als UTF-8 ohne BOM speichern.

Wenn Sie einen guten Texteditor möchten, der Ihre Dateien speichert   In UTF-8 empfehle ich Notepad ++.

Verwenden Sie auf dem Mac Bare Bones TextWrangler (kostenlos) aus dem Mac App Store oder Bare Bones BBEdit aus dem Mac App Store für 39,99 € ... sehr günstig für ein so tolles Tool. In jeder App gibt es ein Menü am unteren Rand des Dokumentfensters, in dem Sie die Dokumentkodierung angeben und Sie können einfach "UTF-8 no BOM" auswählen. Und natürlich können Sie dies als Standard für neue Dokumente in den Einstellungen festlegen.

Aber wenn Ihr Webserver die Kodierung im HTTP-Header ausführt,   was empfohlen wird, beide [metatags] sind unnötig.

Das ist falsch. Sie sollten natürlich die Kodierung im HTTP-Header festlegen, aber Sie sollten sie auch im Meta-Zeichensatzattribut festlegen, damit die Seite vom Benutzer gespeichert werden kann, aus dem Browser in den lokalen Speicher und dann später wieder geöffnet wird Der einzige Hinweis auf die Codierung, die vorhanden sein wird, ist das Meta-Zeichensatzattribut. Sie sollten aus dem gleichen Grund auch ein Basis-Tag festlegen ... auf dem Server ist das Basis-Tag nicht erforderlich, aber wenn es vom lokalen Speicher aus geöffnet wird, ermöglicht das Basis-Tag, dass die Seite so funktioniert, als wäre sie auf dem Server Assets im Ort und so weiter, keine kaputten Links.

AddDefaultCharset UTF-8

Oder Sie können einfach die Codierung bestimmter Dateitypen wie folgt ändern:

AddType text/html;charset=utf-8 html

Ein Tipp für die Bereitstellung von UTF-8- und Latin-1-Dateien (ISO-8859-1) besteht darin, den UTF-8-Dateien eine "Text" -Erweiterung und den Latin-1-Dateien "txt" zu geben.

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

Schließlich sollten Sie in Betracht ziehen, Ihre Dokumente mit Unix-Zeilenenden zu speichern, nicht mit älteren DOS- oder (klassischen) Mac-Zeilenenden, die nicht helfen und vor allem auf der ganzen Linie schaden können, wenn wir uns immer weiter von diesen Altsystemen entfernen. Ein HTML-Dokument mit gültiger HTML5-, UTF-8-Kodierung und Unix-Zeilenenden ist eine gute Arbeit. Sie können dieses Dokument in vielen Kontexten freigeben und bearbeiten, speichern, lesen, wiederherstellen und auf dieses Dokument vertrauen. Es ist Lingua Franca. Es ist digitales Papier.


78
2017-08-20 20:26



<meta charset="utf-8">wurde mit / für HTML5 eingeführt.

Wie in der Dokumentation erwähnt, sind beide gültig. Jedoch, <meta charset="utf-8"> ist nur für HTML5 (und einfacher zu schreiben / erinnern).

Zu gegebener Zeit wird der alte Stil veraltet sein in naher Zukunft. Ich würde mich an das Neue halten <meta charset="utf-8">.

Es gibt nur einen Weg, aber oben. Im Falle der Technologie, das ist das Auslaufen der alten (wirklich, wirklich schnell)

Dokumentation:  HTML Meta-Zeichensatz Attribute-W3Schools


28
2018-06-25 21:04



Obwohl ich die anderen Antworten nicht bestreite, halte ich folgendes für erwähnenswert.

  1. Das lange" (http-equiv) Notation und die "kurze" sind gleich, je nachdem, was zuerst kommt, gewinnt;
  2. Webserver-Header überschreiben alle <meta> Stichworte;
  3. BOM (Byte Order Mark) wird überschrieben alles, und in vielen Fällen wird es html 4 (und wahrscheinlich auch andere Sachen) beeinflussen;
  4. Wenn Sie keine Kodierung deklarieren, erhalten Sie Ihren Text wahrscheinlich in "Fallback-Textkodierung", die in Ihrem Browser definiert ist. Weder in Firefox noch in Chrome ist es utf-8;
  5. In Ermangelung anderer Hinweise wird der Browser versuchen, Ihr Dokument zu lesen, als ob es in ASCII wäre, um die Kodierung zu erhalten, so dass Sie keine seltsamen Kodierungen verwenden können (UTF-16 mit BOM sollte jedoch tun);
  6. Während die Spezifikationen sagen, dass die Kodierungserklärung innerhalb der ersten 512 Bytes des Dokuments liegen muss, versuchen die meisten Browser mehr als das zu lesen.

Sie können testen, indem Sie ausführen 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 und auf den Browser zeigen localhost:4500. (Natürlich möchten Sie Teile ändern oder entfernen. Der BOM-Teil ist \xef\xbb\xbf. Sei vorsichtig mit der Kodierung deiner Shell.)

Bitte beachten Sie, dass es sehr wichtig ist, dass Sie die Verschlüsselung explizit deklarieren. Lassen Sie den Browser raten, kann dies zu Sicherheitsproblemen führen.


18
2018-01-15 00:03



Benutzen <meta charset="utf-8" /> für Webbrowser bei Verwendung von HTML5.

Benutzen <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> wenn Sie HTML4 oder XHTML verwenden, oder für veraltete Dom-Parser wie DOMDocument in PHP


9
2017-11-26 08:08



Es gibt einige Nachrichten, die auf basieren Mozilla-Stiftung, und Standortpunkt

Verwenden Sie diesen Wert nicht (http-equiv=content-type) wie es veraltet ist.   Bevorzugen Sie die charset Attribut auf dem <meta> Element.    enter image description here


0
2017-08-15 23:22