`—` or `—` is there any difference in HTML output?
SGML parsers (or XML parsers in the case of XHTML) can handle —
without having to process the DTD (which doesn't matter to browsers as they just slurp tag soup), while —
is easier for humans to read and write in the source code.
Personally, I would stick to a literal em-dash and ensure that my character encoding settings were consistent.
They are exactly the same character. See: http://en.wikipedia.org/wiki/Dash
Barring browser bugs they will display the same in all cases, so the only difference would be concerning code readability, which would point to —
.
Or, if you are using UTF-8 as a charset in your HTML document, you could enter the character directly. That would also display exactly the same.
—
:: —
:: \u2014
When representing the m-dash in a JavaScript text string for output to HTML, note that it will be represented by its unicode value. There are cases when ampersand characters ('&') will not be resolved—notably certain contexts within JSX. In this case, neither —
nor —
will work. Instead you need to use the Unicode escape sequence: \u2014
.
For example, when implementing a render()
method to output text from a JavaScript variable:
render() {
let text='JSX transcoders will preserve the & character—to '
+ 'protect from possible script hacking and cross-site hacks.'
return (
<div>{text}</div>
)
}
This will output:
<div>JSX transcoders will preserve the & character—to protect from possible script hacking and cross-site hacks.</div>
Instead of the &
– prefixed representation, you should use \u2014:
let text='JSX transcoders will preserve the & character\u2014to …'