`& mdash;` oder `& # 8212;` Gibt es einen Unterschied in der HTML-Ausgabe?

79

— oder —

Gibt es einen Unterschied zwischen diesen? Wird einer besser unterstützt als der andere?

Adam Ramadhan
quelle
7
Nur der Vollständigkeit halber: Das eigentliche Long Dash ("mdash") Zeichen ist: - und sollte so breit sein wie das Zeichen "m"
Simon B.
6
Ja, eine Hauptstadt M
Ray Tayek

Antworten:

85

SGML-Parser (oder XML-Parser im Fall von XHTML) können damit umgehen, —ohne die DTD verarbeiten zu müssen (was für Browser nicht wichtig ist, da sie nur Tag-Suppe schlürfen), während —es für Menschen einfacher ist, den Quellcode zu lesen und zu schreiben.

Persönlich würde ich mich an einen wörtlichen Strich halten und sicherstellen, dass meine Einstellungen für die Zeichenkodierung konsistent sind.

QUentin
quelle
13

Sie sind genau der gleiche Charakter. Siehe: http://en.wikipedia.org/wiki/Dash

Abgesehen von Browserfehlern werden sie in allen Fällen gleich angezeigt, sodass der einzige Unterschied in der Lesbarkeit des Codes besteht, auf die hingewiesen wird —.

Wenn Sie UTF-8 als Zeichensatz in Ihrem HTML-Dokument verwenden, können Sie das Zeichen auch direkt eingeben. Das würde auch genau das gleiche anzeigen.

RoToRa
quelle
5
Beachten Sie, dass dies nur für HTML in XML &8212;funktioniert, obwohl dies —davon abhängt, dass die Entität deklariert wurde.
Flimm
9

—:: —::\u2014

Beachten Sie bei der Darstellung des m-Strichs in einer JavaScript-Textzeichenfolge für die Ausgabe in HTML, dass er durch seinen Unicode-Wert dargestellt wird. Es gibt Fälle, in denen kaufmännisches Und-Zeichen ('&') nicht aufgelöst werden - insbesondere bestimmte Kontexte in JSX. In diesem Fall funktioniert weder —noch —. Stattdessen müssen Sie die Unicode-Escape-Sequenz verwenden : \u2014.

Wenn Sie beispielsweise eine render()Methode zur Ausgabe von Text aus einer JavaScript-Variablen implementieren :

render() {
   let text='JSX transcoders will preserve the & character—to ' 
            + 'protect from possible script hacking and cross-site hacks.'
   return (
     <div>{text}</div>
   )
}

Dies wird Folgendes ausgeben:

<div>JSX transcoders will preserve the & character&mdash;to protect from possible script hacking and cross-site hacks.</div>

Anstelle der &Darstellung mit dem Präfix - sollten Sie \ u2014 verwenden:

let text='JSX transcoders will preserve the & character\u2014to …'
Wrlee
quelle
1
Funktioniert hervorragend mit React.
Grün
2

Von der W3-Website Allgemeine HTML-Entitäten, die für die Typografie verwendet werden

Aus Gründen der Portabilität sollten Unicode-Entitätsreferenzen für die Verwendung in Dokumenten reserviert werden, die sicher in den Zeichensätzen UTF-8 oder UTF-16 geschrieben sind. In allen anderen Fällen sollten die alphanumerischen Referenzen verwendet werden.

Übersetzung: Wenn Sie die umfassendste Unterstützung suchen, gehen Sie mit &mdash;

Kamran
quelle
1

Könnte sein, dass die Verwendung des Zahlencodes universeller ist, da er direkt auf ein Zeichen in der HTML-Entitätstabelle verweist, aber ich denke, beide funktionieren überall. Die erste Notation ist für viele Charaktere nur massiv leichter zu merken.

Joachim VR
quelle