`` & mdash; '' lub `` & # 8212; '' Czy jest jakaś różnica w wynikach HTML?

79

— lub —

Czy jest między nimi różnica? Czy jeden jest lepiej obsługiwany niż drugi?

Adam Ramadhan
źródło
7
Tylko dla kompletności: rzeczywistej długi myślnik ( „mdash”) postać jest: - i powinien być tak szeroki jak znak „M”
Simon B.
6
tak, wielkie M
Ray Tayek

Odpowiedzi:

85

Parsery SGML (lub parsery XML w przypadku XHTML) mogą sobie poradzić —bez konieczności przetwarzania DTD (co nie ma znaczenia dla przeglądarek, ponieważ po prostu slurp tag soup), a jednocześnie —jest łatwiejsze do czytania i pisania w kodzie źródłowym.

Osobiście trzymałbym się dosłownego myślnika em i upewniałbym się, że moje ustawienia kodowania znaków są spójne.

Quentin
źródło
13

Są dokładnie tym samym charakterem. Zobacz: http://en.wikipedia.org/wiki/Dash

Pomijając błędy przeglądarki, będą one wyświetlać te same we wszystkich przypadkach, więc jedyną różnicą byłaby czytelność kodu, na którą wskazywałaby —.

Lub, jeśli używasz UTF-8 jako zestawu znaków w dokumencie HTML, możesz wpisać znak bezpośrednio. To również wyświetlałoby dokładnie to samo.

RoToRa
źródło
5
Zauważ, że jest to prawdziwe tylko dla HTML, w XML, &8212;zawsze działa, podczas gdy —zależy to od zadeklarowania jednostki.
Flimm
10

—:: —::\u2014

Przedstawiając m-myślnik w ciągu tekstowym JavaScript do wyjścia w formacie HTML, należy pamiętać, że będzie on reprezentowany przez wartość w formacie Unicode. Istnieją przypadki, w których znaki ampersand („&”) nie zostaną rozwiązane - w szczególności niektóre konteksty w JSX. W takim przypadku ani —ani —nie zadziała. Zamiast tego trzeba użyć sekwencji ucieczki Unicode: \u2014.

Na przykład podczas implementowania render()metody wyprowadzania tekstu ze zmiennej JavaScript:

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

Spowoduje to wyświetlenie:

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

Zamiast &reprezentacji z prefiksem - użyj \ u2014:

let text='JSX transcoders will preserve the & character\u2014to …'
wrlee
źródło
1
Świetnie współpracuje z Reactem.
Green
2

Ze strony internetowej W3 Typowe encje HTML używane do typografii

Ze względu na przenośność odniesienia do jednostek Unicode powinny być zarezerwowane do użytku w dokumentach, które z pewnością będą zapisane w zestawach znaków UTF-8 lub UTF-16. We wszystkich innych przypadkach należy stosować odniesienia alfanumeryczne.

Tłumaczenie: Jeśli szukasz najszerszego wsparcia, idź z &mdash;

Kamran
źródło
1

Możliwe, że użycie kodu liczbowego jest bardziej uniwersalne, ponieważ jest to bezpośrednie odniesienie do znaku w tabeli encji html, ale myślę, że oba działają wszędzie. Pierwsza notacja jest po prostu znacznie łatwiejsza do zapamiętania dla wielu znaków.

Joachim VR
źródło