HTML-Entitäten: Wann sollte man Dezimal vs. Hex verwenden?

Lesezeit: 6 Minuten

Benutzer-Avatar
cantera

Gibt es eine gute Faustregel für die Verwendung von Dezimal- und Hexadezimalschreibweise für HTML-Entities?

Beispielsweise wird ein nicht umbrechender Bindestrich dezimal als geschrieben ‑ und in Hex als ‑.

Diese Antwort besagt, dass Hexadezimal für Unicode ist; bedeutet das, dass hex verwendet werden sollte, wenn Sie die verwenden <meta charset="utf-8"> Tag im Dokument <head>?

Gelegentlich bemerke ich, dass Entity-Zeichen fälschlicherweise anstelle der Entities dargestellt werden, die sie darstellen – zum Beispiel &amp; Erscheint (anstelle eines kaufmännischen Und) in einer E-Mail-Betreffzeile oder einer RSS-Überschrift. Ist entweder Hex oder Dezimal besser, um dies zu vermeiden?

Eine letzte Überlegung: Kann die Verwendung von Hex oder Dezimal die Renderklarheit (Klarheit) des Zeichens beeinflussen?

  • “kann die Verwendung von Hex oder Dezimal das Rendering beeinflussen”, nicht, wenn Ihr Browser beides unterstützt. Es ist wie “Ich habe die Helligkeit meines Monitors heruntergeregelt, werden andere meine Posts jetzt dunkler sehen?”

    – Jongware

    3. Dezember 2013 um 18:34 Uhr

  • mögliches Duplikat von Why HTML decimal and HTML hex?

    – Jukka K. Korpela

    3. Dezember 2013 um 18:46 Uhr

  • @Jukka, bitte nicht schließen; Ich habe diese Frage verlinkt und sie enthält nicht die Informationen, die ich benötige.

    – Kantera

    3. Dezember 2013 um 19:15 Uhr

  • OK, geschlossene Abstimmung zurückgezogen. Diese Frage unterscheidet sich ausreichend von der alten (obwohl sie für SO etwas weit gefasst ist, aber ich werde versuchen, sie zu beantworten).

    – Jukka K. Korpela

    3. Dezember 2013 um 19:47 Uhr

Benutzer-Avatar
Jukka K. Korpela

Die Faustregel lautet: Verwenden Sie, was Sie bevorzugen, aber bevorzugen Sie Hex. ☺

Es gibt keinen Unterschied in der Bedeutung und keinen Unterschied in der Browserunterstützung (die letzten Browser, die Dezimalreferenzen unterstützten, starben erst in den 1990er Jahren).

Wie @AlexW beschreibt, sind hexadezimale Referenzen aufgrund der Art und Weise, wie Zeichencodestandards geschrieben werden, natürlicher als dezimale. Aber wenn Sie Dezimalreferenzen bequemer finden, verwenden Sie sie.

Das Problem hat nichts damit zu tun meta Tags und Zeichenkodierungen. Der Hauptgrund, warum Zeichenreferenzen in HTML eingeführt wurden, ist, dass Sie damit Zeichen ziemlich unabhängig von der Kodierung des Dokuments eingeben können. Dazu gehören Zeichen, die in der verwendeten Codierung überhaupt nicht direkt geschrieben werden können. Dank ihnen können Sie jedes Unicode-Zeichen eingeben, selbst wenn die Zeichencodierung ASCII oder eine andere eingeschränkte Codierung wie ISO-8859-1 ist.

Früher war es üblich, die Verwendung benannter Referenzen (oder „Entity References“, wie sie in klassischem HTML formal genannt werden) zu empfehlen, wenn möglich, weil eine Referenz wie &Omega;wenn es dem Benutzer wörtlich angezeigt wird, ist verständlicher als ein Verweis wie &#x3A9; oder &#937;. Dies ist seit über einem Jahrzehnt nicht mehr relevant, soweit es um Webbrowser geht. Aber z. B. E-Mail-Clients könnten in dieser Hinsicht ziemlich dumm^H^H^H^H^H^H^H^H^H unterentwickelt sein. Sie könnten zB Verweise als solche in einer Liste von Nachrichten anzeigen, obwohl sie diese beim Anzeigen einer Nachricht richtig interpretieren können. Aber es scheint kein konsistentes Verhalten zu geben, auf das man sich verlassen könnte.

  • Danke Jukka – tolle Antwort. Wollten Sie anzeigen ^H wie gezeigt, oder war das ein Fall von Entity-Ironie?

    – Kantera

    3. Dezember 2013 um 21:31 Uhr

  • ^H war eine absichtliche Anspielung auf alte Geräte, bei denen Control-H (Backspace) oft als ^H wiedergegeben wurde. Es war also eine ironische Pseudo-Löschung.

    – Jukka K. Korpela

    3. Dezember 2013 um 22:06 Uhr

  • Vielen Dank für Ihre Antwort. Wie passt dies zu der offiziellen Empfehlung des W3C, Dezimalzahlen anstelle von Hexadezimalzahlen zu verwenden? Ihr Validator mag keine Hexadezimalzahlen und sie verlinken auf dieses Dokument (cs.tut.fi/~jkorpela/www/windows-chars.html#numref), wobei die Dezimalzahl empfohlen wird.

    – Eingemachter Mann

    7. Oktober 2017 um 10:59 Uhr

  • Canned Man, ich sehe nicht, auf welche W3C-Empfehlung Sie sich beziehen und welche Hexadezimalzahl ihr Validator nicht mag. Ich kann mich nicht erinnern, wo sie auf meine Seite über Windows-Zeichen verweisen, aber auf jeden Fall ist diese Seite nicht offiziell und muss überarbeitet werden (womit ich jetzt beginnen werde).

    – Jukka K. Korpela

    9. Oktober 2017 um 7:31 Uhr

Benutzer-Avatar
Beejor

Gesamt

HTML (und XML) bietet drei Möglichkeiten, Sonderzeichen zu kodieren: Numerisch Hex &#x26;numerische Dezimalzahl &#38; (auch bekannt als “Zeichenreferenzen”) und benannt &amp; (auch bekannt als “Entitätsreferenzen”). Sie sind seit Jahrzehnten von allen gängigen Browsern gleichermaßen gültig und werden vollständig unterstützt. Sie funktionieren mit jeder Codierung, rendern aber immer aus dem Unicode-Satz (der mit ASCII, ISO Latin und Windows Latin kompatibel ist, abzüglich der Codes 128-159).

Es liegt also an den persönlichen Vorlieben, wobei einige Dinge zu beachten sind.

Notwendigkeit

Wenn Sie den richtigen Zeichensatz hinzufügen meta Tag zu Ihrem HTML hinzufügen, müssen Sie überhaupt keine Sonderzeichen codieren (außer & < > " 'oder allgemeiner, einfach & < im losen Text). Die Ausnahme besteht darin, ein Zeichen zu codieren, das in der angegebenen Codierung nicht vorhanden ist. Aber wenn Sie UTF-8 verwenden, können Sie sowieso alles von Unicode darstellen.

Kürze

Für alle Zeichen unter Index 10 ist dezimal kürzer. Eine Registerkarte ist &#9;gegen &#x09;es kann sich also lohnen pre Tags, die beispielsweise viele TSV-Daten enthalten.

Benutzerfreundlichkeit

Benannte Referenzen sind am einfachsten zu verwenden und zu merken, insbesondere für Code, der von Entwicklern mit unterschiedlichem Hintergrund und unterschiedlichen Fähigkeiten geteilt wird. &lt; ist viel intuitiver als &#x3c;. Was den Kommentar eines anderen zur Relevanz betrifft, so werden sie tatsächlich immer noch vollständig als Teil des W3C-Standards unterstützt und wurden sogar für HTML5 erweitert.

Beste Übung

Die Verwendung benannter oder dezimaler Referenzen ist möglicherweise nicht die beste allgemeine Vorgehensweise, da die Namen nur auf Englisch und nur in HTML vorkommen (selbst in XML fehlen benannte Referenzen, abzüglich der „Big Five“). Die meisten Programmiersprachen und Zeichentabellen verwenden Hex-Codierung, was die Dinge auf lange Sicht einfacher und tragbarer macht, wenn Sie konsistent bleiben. Bei kleinen Projekten oder Sonderfällen spielt dies jedoch möglicherweise keine Rolle.

Mehr Info: http://xmlnews.org/docs/xml-basics.html#references

Benutzer-Avatar
Alex W

Diese nennt man numerische Zeichenreferenzen. Sie sind abgeleitet von SGML und der numerische Teil von ihnen bezieht sich auf das Spezifische Unicode-Codepunkt des Zeichens, das Sie anzeigen möchten. Sie ermöglichen es Ihnen, Zeichen von Unicode darzustellen, selbst wenn der bestimmte Zeichensatz, in dem Sie den HTML-Code geschrieben haben, nicht das Zeichen enthält, auf das Sie verweisen. Ob Sie den Codepunkt dezimal oder hexadezimal referenzieren, spielt keine Rolle, außer bei sehr alten Browsern, die Dezimalzahlen bevorzugen. Hexadezimal-Unterstützung wurde hinzugefügt, da Unicode-Codepunkte in Hex-Notation referenziert werden und es viel einfacher ist, den Codepunkt nachzuschlagen und dann die Referenz hinzuzufügen, ohne in Dezimalzahlen konvertieren zu müssen:

U+007D

=

&#x007D;

Zur Beantwortung Ihrer Frage:

Diese Antwort besagt, dass Hexadezimal für Unicode ist; bedeutet das, dass hex verwendet werden sollte, wenn Sie die verwenden <meta charset="utf-8"> Tag im Dokument?

Sie müssen verstehen, dass UTF-8 abwärtskompatibel mit ASCII / ISO-8859-1 ist. Die ersten 256 Zeichen von UTF-8 sind also in ASCII und UTF-8 gleich. Hex ist für UTF-8 nur einfacher, da es ab 2013 1.114.112 Unicode-Codepunkte gibt. So ist es einfacher zu schreiben &#x110000; als zu schreiben &#1114112; usw.

1145050cookie-checkHTML-Entitäten: Wann sollte man Dezimal vs. Hex verwenden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy