wake-up-neo.net

<meta charset = "utf-8"> vs <meta http-equiv = "Content-Type">

Welche Schreibweise soll ich verwenden, um den Zeichensatz für HTML5 Doctype zu definieren?

  1. Kurz:

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

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

In HTML5 sind sie gleichwertig. Verwenden Sie die kürzere, es ist einfacher, sich zu erinnern und zu tippen. Browser-Unterstützung ist in Ordnung da es für die Abwärtskompatibilität entwickelt wurde.

1046
Quentin

Beide Formen der Meta-Zeichensatz -Deklaration sind äquivalent und sollten für alle Browser gleich funktionieren. Es gibt jedoch ein paar Dinge, die Sie beachten müssen, wenn Sie Ihren Zeichensatz für Webdateien als UTF-8 deklarieren:

  1. Speichern Sie Ihre Datei (en) in UTF-8-Codierung ohne das Byte-Ordnungszeichen (Stückliste).
  2. Deklarieren Sie die Kodierung in Ihren HTML-Dateien mit Meta-Zeichensatz (wie oben).
  3. Ihr Webserver muss Ihre Dateien bereitstellen und die UTF-8-Codierung im HTTP-Header des Inhaltstyps deklarieren.

Apache-Server sind standardmäßig so konfiguriert, dass sie Dateien in ISO-8859-1 bereitstellen. Fügen Sie Ihrer .htaccess -Datei daher die folgende Zeile hinzu:

AddDefaultCharset UTF-8

Dadurch wird Apache so konfiguriert, dass Ihre Dateien mit UTF-8-Codierung im Antwortheader "Content-Type" bereitgestellt werden. Ihre Dateien müssen jedoch zunächst in UTF-8 (ohne Stückliste) gespeichert werden .

Notepad kann Ihre Dateien in UTF-8 ohne die Stückliste nicht speichern. Ein kostenloser Editor, der das kann, ist Notepad ++ . Wählen Sie in der Programmmenüleiste "Codierung> In UTF-8 ohne Stückliste codieren". Sie können Dateien auch öffnen und in UTF-8 speichern, indem Sie "Codierung> In UTF-8 ohne Stückliste konvertieren" verwenden.

Mehr zum Byte Order Mark (BOM) bei Wikipedia .

246
CodeBoy

Ein weiterer Grund für die Verwendung der Kurzform ist, dass sie mit anderen Instanzen übereinstimmt, in denen Sie möglicherweise einen Zeichensatz in markup angeben. 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 hilft, Fehler zu reduzieren und den Code lesbarer zu machen.

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

Außerdem gibt es überhaupt keinen Grund, einen anderen Wert als UTF-8 im Meta-Zeichensatz-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 in UTF-8 keine HTML-Entities verwenden. Zeichen wie das Copyright-Symbol sollten direkt eingegeben werden. Die einzigen Entitäten, die Sie verwenden sollten, sind für die 5 reservierten Markup-Zeichen: Kleiner als, Größer als, Et-Zeichen, Prim, Doppel-Prim. Entitäten benötigen einen HTML-Parser, den Sie möglicherweise nicht immer verwenden möchten. Er führt zu Fehlern, macht Ihren Code weniger lesbar, vergrößert Ihre Dateien und dekodiert manchmal in verschiedenen Browsern falsch, je nachdem, welche Entitäten Sie verwendet haben. Erfahren Sie, wie Sie Copyright, Warenzeichen, offenes Zitat, nahes Zitat, Apostroph, Bindestrich, Aufzählungszeichen, Euro und alle anderen Zeichen, auf die Sie in Ihrem Inhalt stoßen, eingeben/einfügen und diese tatsächlichen Zeichen in Ihrem Code verwenden. Der Mac verfügt über eine Zeichenanzeige, die Sie in den Systemeinstellungen der Tastatur aktivieren können. Sie können die gewünschten Zeichen suchen und dann ziehen und ablegen oder die entsprechende Tastaturanzeige verwenden, um festzustellen, welche Tasten Sie eingeben müssen. Zum Beispiel ist die Marke 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 Bindestrichs. Es ist keine schlechte Idee, auch die Regeln der Zeichensetzung und Typografie zu lernen ... zum Beispiel zu wissen, dass ein Punkt in einem engen Zitat steht und nicht außerhalb.

Die Verwendung eines Tags für einen Inhaltstyp und eine Codierung ist sehr ironisch, da Sie ohne Kenntnis dieser Dinge die Datei nicht analysieren konnten, um den Wert des Metatags zu ermitteln.

Nein, das stimmt nicht. Der Browser beginnt mit dem Parsen der Datei als Standardcodierung des Browsers, entweder UTF-8 oder ISO-8859-1. Da US-ASCII eine Teilmenge von ISO-8859-1 nd UTF-8 ist, kann der Browser in beiden Fällen einwandfrei lesen ... es ist dasselbe. Wenn der Browser auf das Meta-Zeichensatz-Tag stößt und die Codierung von der bereits verwendeten abweicht, lädt der Browser die Seite in der angegebenen Codierung neu. Deshalb setzen wir das Meta-Charset-Tag direkt nach dem Head-Tag oben, vor allem anderen, sogar dem 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 Stückliste speichern

Das ist nicht ganz richtig. Wenn Ihr Dokument nur US-ASCII-Zeichen enthält, können Sie es als US-ASCII-Zeichen speichern und als UTF-8-Zeichen bereitstellen, da es sich um eine Teilmenge handelt. Wenn jedoch Unicode-Zeichen vorhanden sind, müssen Sie diese korrekt als UTF-8 ohne Stückliste speichern.

Wenn Sie einen guten Texteditor benötigen, der Ihre Dateien in UTF-8 speichert, empfehle ich Notepad ++.

Verwenden Sie auf dem Mac Bare Bones TextWrangler (kostenlos) aus dem Mac App Store oder Bare Bones BBEdit, das im Mac App Store für 39,99 US-Dollar erhältlich ist. In beiden Anwendungen befindet sich am unteren Rand des Dokumentfensters ein Menü, in dem Sie die Dokumentkodierung festlegen und ganz einfach "UTF-8 ohne Stückliste" auswählen können. Und natürlich können Sie dies in den Voreinstellungen als Standard für neue Dokumente festlegen.

Wenn Ihr Webserver jedoch die empfohlene Codierung im HTTP-Header bereitstellt, sind beide [Meta-Tags] unnötig.

Das ist falsch. Sie sollten die Codierung natürlich im HTTP-Header festlegen, aber Sie sollten sie auch im Meta-Zeichensatz-Attribut festlegen, damit die Seite vom Benutzer gespeichert, aus dem Browser in den lokalen Speicher verschoben und in diesem Fall später erneut geöffnet werden kann Der einzige Hinweis auf die Codierung, die vorhanden sein wird, ist das Meta-Zeichensatz-Attribut. Aus dem gleichen Grund sollten Sie auch ein Basis-Tag festlegen ... Auf dem Server ist das Basis-Tag nicht erforderlich, aber wenn es aus dem lokalen Speicher geöffnet wird, ermöglicht das Basis-Tag, dass die Seite so funktioniert, als ob sie sich auf dem Server befindet Vermögenswerte vorhanden und so weiter, keine defekten 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 zum Bereitstellen von UTF-8- und Latin-1-Dateien (ISO-8859-1) besteht darin, den UTF-8-Dateien die Erweiterung "text" und den Latin-1-Dateien die Erweiterung "txt" zuzuweisen.

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 weiterhelfen und möglicherweise schaden, insbesondere dann, wenn diese älteren Systeme immer weiter entfernt werden. Ein HTML-Dokument mit gültigem HTML5, UTF-8-Codierung und Unix-Zeilenenden ist eine gute Arbeit. Sie können dieses Dokument in vielen Kontexten freigeben, bearbeiten, speichern, lesen und wiederherstellen und sich darauf verlassen. Es ist Verkehrssprache. Es ist digitales Papier.

81
Simon White

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

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

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

Es gibt nur einen Weg, aber nach oben. Im Fall von Tech, das ist das Auslaufen der alten (wirklich, sehr schnell)

Dokumentation: HTML-Meta-Zeichensatz Attribut - W3Schools

30
Omar

Obwohl ich die anderen Antworten nicht bestreite, denke ich, dass das Folgende erwähnenswert ist.

  1. Die "lange" (http-equiv) Notation und die "kurze" sind gleich, je nachdem, was zuerst kommt, gewinnt;
  2. Webserver-Header überschreiben alle <meta> -Tags.
  3. BOM (Byte Order Mark) überschreibt alles und beeinflusst in vielen Fällen HTML 4 (und wahrscheinlich auch andere Dinge).
  4. Wenn Sie keine Codierung deklarieren, erhalten Sie Ihren Text wahrscheinlich in der von Ihrem Browser definierten „Fallback-Textcodierung“. Weder in Firefox noch in Chrome ist es utf-8;
  5. In Ermangelung anderer Hinweise versucht der Browser, Ihr Dokument so zu lesen, als wäre es in ASCII, um die Codierung zu erhalten. Sie können also keine seltsamen Codierungen verwenden (utf-16 mit BOM sollte dies jedoch tun). ;
  6. Während die Spezifikation besagt, dass die Kodierungsdeklaration innerhalb der ersten 512 Bytes des Dokuments liegen muss, versuchen die meisten Browser, mehr als das zu lesen.

Sie können dies testen, indem Sie 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 ausführen und Ihren Browser auf localhost:4500 richten. (Natürlich möchten Sie Teile ändern oder entfernen. Der Stücklistenteil ist \xef\xbb\xbf. Seien Sie vorsichtig bei der Kodierung Ihrer Shell.)

Bitte beachten Sie, dass es sehr wichtig ist, dass Sie die Kodierung explizit deklarieren. Das Erraten von Browsern kann zu Sicherheitsproblemen führen.

17
squirrel

Verwenden Sie <meta charset="utf-8" /> für Webbrowser, wenn Sie HTML5 verwenden.

Verwenden Sie <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 5.3

11
Timo Huovinen

Es gibt einige Neuigkeiten basierend auf Mozilla Foundation und sitepoint

Verwenden Sie diesen Wert (http-equiv=content-type) nicht, da er veraltet ist. Bevorzugen Sie das charset-Attribut für das <meta> -Element. enter image description here

2
user10089632

Um eine Signatur in eine E-Mail einzubetten, würde ich die Langversion verwenden:

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

Der Grund dafür ist, dass nicht viele E-Mail-Leser HTML5 verwenden. Daher sollten Sie immer alte HTML-Stile verwenden. Eigentlich ist es besser, Tabellen als divs + css zu verwenden.

0
chelder