web-dev-qa-db-ja.com

`mdash;`または `#8212;`はHTML出力に違いがありますか?

—または—

これらの間に違いはありますか?一方が他方よりもサポートされていますか?

78
Adam Ramadhan

SGMLパーサー(またはXHTMLの場合はXMLパーサー)は、DTDを処理することなく—を処理できます(ブラウザでSlurpタグスープを使用するだけなので、—の方が簡単です)ソースコードを読み書きする人間。

個人的には、文字通りのem-dashに固執し、文字エンコード設定が一貫していることを確認します。

83
Quentin

それらはまったく同じキャラクターです。参照: http://en.wikipedia.org/wiki/Dash

ブラウザのバグがない限り、すべてのケースで同じように表示されるため、唯一の違いはコードの読みやすさに関するもので、—を指します。

または、HTMLドキュメントの文字セットとしてUTF-8を使用している場合は、文字を直接入力できます。それもまったく同じように表示されます。

13
RoToRa

— :: — :: \u2014

HTMLへの出力用にJavaScriptテキスト文字列でmダッシュを表す場合、Unicode値で表すことに注意してください。アンパサンド文字(「&」)が解決されない場合があります(特にJSX内の特定のコンテキスト)。この場合、——も機能しません。代わりに、Unicodeエスケープシーケンス\u2014を使用する必要があります。

たとえば、render()メソッドを実装してJavaScript変数からテキストを出力する場合:

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

これは出力されます:

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

&–プレフィックス付き表現の代わりに、\ u2014を使用する必要があります。

let text='JSX transcoders will preserve the & character\u2014to '…
5
wrlee

W3 Webサイトから タイポグラフィに使用される一般的なHTMLエンティティ

移植性のため、Unicodeエンティティ参照は、UTF-8またはUTF-16文字セットで記述されていることが確実なドキュメントで使用するために予約する必要があります。その他の場合はすべて、英数字参照を使用する必要があります。

翻訳:最も幅広いサポートをお探しの場合は、&mdash;を使用してください

2
Kamran

それは、htmlエンティティテーブル内の文字への直接参照であるため、数字コードを使用する方がより普遍的である可能性がありますが、どちらもどこでも機能すると思います。最初の表記法は、多くのキャラクターにとって非常に覚えやすいものです。

1
Joachim VR