HTML-Entitäten: Wann sollte man Dezimal vs. Hex verwenden?
Lesezeit: 6 Minuten
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 & 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
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 Ωwenn es dem Benutzer wörtlich angezeigt wird, ist verständlicher als ein Verweis wie Ω oder Ω. 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
Beejor
Gesamt
HTML (und XML) bietet drei Möglichkeiten, Sonderzeichen zu kodieren: Numerisch Hex &numerische Dezimalzahl & (auch bekannt als “Zeichenreferenzen”) und benannt & (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 	gegen 	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. < ist viel intuitiver als <. 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.
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
=
}
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 � als zu schreiben � usw.
11450500cookie-checkHTML-Entitäten: Wann sollte man Dezimal vs. Hex verwenden?yes
“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