`` & 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?


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.


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.


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 …'

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;


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.