Wann sollte man HTML-Entitäten verwenden?


115

Das hat mich seit einiger Zeit verwirrt. Mit dem Aufkommen von UTF-8 als De-facto-Standard in der Webentwicklung bin ich mir nicht sicher, in welchen Situationen ich die HTML-Entitäten verwenden soll und für welche ich nur das UTF-8-Zeichen verwenden soll. Beispielsweise,

  • em dash (-, &emdash;)
  • kaufmännisches Und (&, &)
  • 3/4 Fraktion (¾, ¾)

Bitte beleuchten Sie dieses Problem. Es wird geschätzt.


Was macht htmlentities () in PHP?
Joe Phillips

Beim Lesen der Antworten und Kommentare scheint es mir noch keine universelle Regel zugunsten der einen oder anderen zu geben, und die Antwort hängt immer noch davon ab .
Majid Fouladpour

Antworten:


76

Sie müssen im Allgemeinen keine HTML-Zeichenentitäten verwenden, wenn Ihr Editor Unicode unterstützt. Entitäten können nützlich sein, wenn:

  • Ihre Tastatur unterstützt nicht das Zeichen, das Sie eingeben müssen. Beispielsweise haben viele Tastaturen weder einen Strich noch das Copyright-Symbol.
  • Ihr Editor unterstützt Unicode nicht (sehr häufig vor einigen Jahren, aber wahrscheinlich nicht heute).
  • Sie möchten in der Quelle deutlich machen, was gerade passiert. Beispielsweise ist der  Code klarer als das entsprechende Leerzeichen.
  • Sie müssen HTML - Sonderzeichen wie zu entkommen <, &oder ".

1
Sehr hilfreich. Vielen Dank. Ich benutze ein hilfreiches Programm, um ungewöhnliche Charaktere zu bekommen. Es heißt Popchar und wird von Ergonis hergestellt, ist aber nur für OS X.
allesklar

3
Randnotiz: Wikipedia schreibt immer noch Mandate &nbsp;anstelle des eigentlichen Leerzeichens vor, auch weil Firefox U + 00A0 in Formularen in U + 0020 konvertiert. Die Verwendung der Entität ist in diesem Fall die einzige Möglichkeit, um sicherzustellen, dass die Quelle nicht jedes Mal durcheinander gebracht wird, wenn ein Firefox-Benutzer sie bearbeitet.
Joey

2
Eine feine Zusammenfassung, aber in Bezug auf den letzten Punkt ist es so, <dass häufig ein Escapezeichen benötigt wird, niemals >(und "nur selten innerhalb von Attributwerten ein Escapezeichen benötigt wird).
Jukka K. Korpela

Ein weiterer Grund, & nbsp; ist so, dass Sie mehrere Leerzeichen auf einer HTML-Seite anzeigen können.
Zylstra

Sollte also &amp;immer statt verwendet werden &? Gibt es einen Grund dafür?
Prometheus

116

Aufgrund der Kommentare, die ich erhalten habe, habe ich dies etwas weiter untersucht. Es scheint, dass derzeit die beste Vorgehensweise darin besteht, auf die Verwendung von HTML-Entitäten zu verzichten und stattdessen das eigentliche UTF-8-Zeichen zu verwenden . Die aufgeführten Gründe sind folgende:

  1. UTF-8-Codierungen sind für diejenigen, die verstehen, was das Zeichen bedeutet und wie man es eingibt, einfacher zu lesen und zu bearbeiten.
  2. UTF-8-Codierungen sind für diejenigen, die sie nicht verstehen, genauso unverständlich wie HTML-Entitätscodierungen, haben jedoch den Vorteil, dass sie als Sonderzeichen gerendert werden und nicht als schwer verständliche Dezimal- oder Hex-Codierungen.

Solange die Codierung Ihrer Seite ordnungsgemäß auf UTF-8 eingestellt ist, sollten Sie das tatsächliche Zeichen anstelle einer HTML-Entität verwenden. Ich habe mehrere Dokumente zu diesem Thema gelesen, aber die hilfreichsten waren:

Aus dem Artikel UTF-8: Das Geheimnis der Zeichenkodierung :

Wikipedia ist eine großartige Fallstudie für eine Anwendung, die ursprünglich ISO-8859-1 verwendete, aber auf UTF-8 umstellte, als es viel zu umständlich wurde, Fremdsprachen zu unterstützen. Bots gehen nun tatsächlich Artikel durch und konvertieren Zeichenentitäten aus Gründen der Benutzerfreundlichkeit und Suchbarkeit in ihre entsprechenden realen Zeichen .

Dieser Artikel enthält auch ein schönes Beispiel für die chinesische Codierung. Hier ist das abgekürzte Beispiel aus Gründen der Faulheit:

UTF-8:

這兩個字是甚麼意思

HTML-Entitäten :

&#36889;&#20841;&#20491;&#23383;&#26159;&#29978;&#40636;&#24847;&#24605;

Die UTF-8- und HTML-Entitätscodierungen sind für mich beide bedeutungslos, aber zumindest die UTF-8-Codierung ist als Fremdsprache erkennbar und wird in einem Bearbeitungsfeld ordnungsgemäß gerendert. In dem Artikel wird Folgendes über die HTML-Entitäts-codierte Version gesagt:

Sehr unpraktisch für diejenigen von uns, die tatsächlich wissen, was Charakterentitäten sind, völlig unverständlich für arme Benutzer, die dies nicht tun! Sogar die etwas benutzerfreundlicheren, "verständlicheren" Charaktereinheiten wie & theta; Benutzer, die nicht daran interessiert sind, HTML zu lernen, kratzen sich am Kopf. Wenn sie andererseits θ in einem Bearbeitungsfeld sehen, wissen sie, dass es sich um ein Sonderzeichen handelt, und behandeln es entsprechend, auch wenn sie nicht wissen, wie sie dieses Zeichen selbst schreiben sollen.

Wie andere angemerkt haben, müssen Sie weiterhin HTML-Entitäten für reservierte XML-Zeichen verwenden (kaufmännisches Und, kleiner als, größer als).


Diese Antwort hilft enorm. Aber zur Verdeutlichung, nach meinem eigenen Verständnis: Es ist nicht riskant oder ungültig, &entity;Syntax in einem HTML-Dokument mit einem deklarierten UTF-8-Zeichensatz zu verwenden, richtig? Während einfache UTF-8-Zeichen aus den von Ihnen aufgeführten Gründen besser sind, gibt es kein Problem, wenn sich noch einige HTML-Entitäten im selben Dokument befinden?
Jacob Ford

@JacobFord Richtig, das Mischen von HTML-Entitäten mit UTF-8-Zeichen ist nicht riskant oder ungültig, sondern kann nur jemanden verwirren, der die Quelle liest.
William Brendel

5

Ich würde UTF-8 nicht für Zeichen verwenden, die visuell leicht zu verwechseln sind. Zum Beispiel ist es schwierig, einen Emdash von einem Minus oder insbesondere einen nicht unterbrechenden Raum von einem Raum zu unterscheiden. Verwenden Sie für diese Zeichen definitiv Entitäten.

Verwenden Sie für Zeichen, die visuell leicht zu verstehen sind (wie die obigen chinesischen Beispiele), UTF-8, wenn Sie möchten.


5

Persönlich mache ich alles in utf-8 seit langer Zeit, aber auf einer HTML-Seite müssen Sie immer kaufmännisches Und (&), größer als (>) und kleiner als (<) Zeichen, in ihre äquivalenten Entitäten & amp; konvertieren. & gt; und & lt;

Wenn Sie beabsichtigen, mit utf-8-Text zu programmieren, sollten Sie einige Dinge beachten.

  • XML benötigt einige zusätzliche Zeilen zur Überprüfung, wenn Entitäten verwendet werden.
  • Einige Bibliotheken spielen nicht gut mit utf-8. Zum Beispiel hat PHP in einigen Linux-Distributionen die volle Unterstützung für utf-8 in ihren Bibliotheken für reguläre Ausdrücke eingestellt.
  • Es ist schwieriger, die Anzahl der Zeichen in einem Text zu begrenzen, der HTML-Entitäten verwendet, da eine einzelne Entität viele Zeichen verwendet. Außerdem besteht immer das Risiko, das Unternehmen zu halbieren.

Es ist ein sehr kleiner Punkt, aber es ist nicht erforderlich, größer als (>), nur kleiner als (<) zu codieren.
Codemonkey

4

Entitäten können Ihnen Kompatibilität mit hirntoten Clients bieten, die Codierungen nicht richtig verstehen. Ich glaube nicht, dass dies aktuelle Browser einschließt, aber Sie wissen nie, welche anderen Arten von Programmen Sie treffen könnten.

Nützlicher ist jedoch, dass HTML-Entitäten Sie vor Ihren eigenen Fehlern schützen: Wenn Sie etwas auf dem Server falsch konfigurieren und am Ende eine Seite mit einem HTTP-Header bereitstellen, der dies anzeigt, ISO-8859-1und einem METATag, das dies UTF-8anzeigt, zumindest Ihren & mdash; es wird immer funktionieren.


5
Sie könnten jedoch das gegenteilige Argument vorbringen: &mdashWenn die Header falsch konfiguriert sind, wird es schwieriger , ein Problem zu erkennen.
Pekka

4

HTML-Entitäten sind nützlich, wenn Sie Inhalte generieren möchten, die (dynamisch) in Seiten mit (mehreren) unterschiedlichen Codierungen aufgenommen werden sollen. Zum Beispiel haben wir White-Label-Inhalte, die sowohl in ISO-8859-1- als auch in UTF-8-codierten Webseiten enthalten sind ...

Wenn die Konvertierung von Zeichensätzen von / nach UTF-8 kein so großes, unzuverlässiges Durcheinander wäre (Sie stolpern immer über einige Zeichen und einige Tools, die nicht richtig konvertiert werden), wäre die Standardisierung auf UTF-8 der richtige Weg.


2

Wenn Ihre Seiten in utf-8 korrekt codiert sind, sollten Sie keine HTML-Entitäten benötigen. Verwenden Sie einfach die gewünschten Zeichen direkt.


3
Ich denke, Sie werden sie noch brauchen, um die reservierten Zeichen zu kodieren.
Rmeador

@rmeador - dem stimme ich zu.
Otávio Décio

2

Alle vorherigen Antworten sind für mich sinnvoll.

Außerdem: Dies hängt hauptsächlich von dem Editor ab, den Sie verwenden möchten, und von der Dokumentensprache. Eine Mindestanforderung für den Editor ist, dass er die Dokumentensprache unterstützt. Das heißt, wenn Ihr Text auf Japanisch ist, achten Sie darauf, keinen Editor zu verwenden, der sie nicht anzeigt (dh keine Entitäten für das Dokument selbst). Wenn es Englisch ist, können Sie sogar einen alten vim-ähnlichen Editor verwenden und Entitäten nur für die relativ seltenen & copy; und Freunde. Natürlich: & gt; für> und andere HTML-Specials benötigen noch Escapezeichen. Aber selbst mit den anderen Latein-1-Sprachen (Deutsch, Französisch usw.) ist das Schreiben von ä ein Schmerz, wenn Sie wissen, wo ...

Außerdem schreibe ich persönlich Entitäten für unsichtbare Zeichen und solche, die Standard-ASCII ähneln und daher leicht zu verwechseln sind. Zum Beispiel gibt es u1173 (sieht in einigen Zeichensätzen wie ein Bindestrich aus) oder u1175, das wie die vertikale Leiste aussieht. Ich würde auf jeden Fall Entitäten für diese verwenden.


& gt; wird NICHT benötigt für>, Sie können einfach> verwenden. & lt; Wird jedoch für <benötigt.
Codemonkey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.