Dlaczego nie należy używać znaku `'' do pominięcia pojedynczych cudzysłowów?

158

Jak stwierdzono w artykule, Kiedy pojedyncze cudzysłowy w HTML stały się tak popularne? i Jquery osadzony cytat w atrybucie , wpis Wikipedii w HTML mówi, co następuje:

Znak pojedynczego cudzysłowu ('), gdy jest używany do cytowania wartości atrybutu, musi również zostać poprzedzony znakiem zmiany znaczenia 'lub '(NIE powinien być stosowany jak 'inaczej niż w dokumentach XHTML), gdy pojawia się w samej wartości atrybutu.

Dlaczego nie powinien 'być używany? Czy można "bezpiecznie używać zamiast "?

ćwiek
źródło
7
Zauważ, że IE8 nie obsługuje '.
Paul D. Waite,

Odpowiedzi:

178

"znajduje się na oficjalnej liście prawidłowych encji HTML 4 , ale go 'nie ma.

Od C.16. Odniesienie do nazwanej postaci ' :

Nazwane odwołanie do znaku ' (apostrof, U + 0027) zostało wprowadzone w XML 1.0, ale nie pojawia się w HTML. Dlatego autorzy powinni używać 'zamiast 'działać zgodnie z oczekiwaniami w agentach użytkownika HTML 4.

cletus
źródło
3
"znajduje się na liście, więc powinno być OK.
Bennett McElwee
9
Dzisiaj zdarzyło się, że na komputerze z IE8 & apos; nie został przeanalizowany, więc użytkownik widzi kod. Zastąpienie przez & # 39; Rozwiązać problem.
Michele Gargiulo
9
& aquot; NIE zastępuje & apos; jako jeden, a drugi podwójny.
RichardTheKiwi
FYI: HTML5 obsługuje oba podmioty
Tarol
30

' nie jest częścią standardu HTML 4.

" jest jednak, więc jest w porządku w użyciu.

Zaraz.
źródło
8
Jak to może być odpowiedź, kiedy & aquot; = "nie"? To tak, jakby sugerować dwukropek zamiast średnika ...
RichardTheKiwi,
12
@Richardakacyberkiwi Przeczytaj pytanie do końca.
ColBeseder
3
@Anon .: 'jest teraz częścią standardu HTML .
Paul D. Waite,
29

" jest poprawny zarówno w HTML5, jak i HTML4.

'jest poprawny w HTML5 , ale nie HTML4 . Jednak większość przeglądarek i tak obsługuje 'HTML4.

Zaz
źródło
10
Zauważ, że IE 8 nie obsługuje '.
Paul D. Waite,
17

Jeśli trzeba napisać poprawny semantycznie mark-up, nawet w HTML5, trzeba nie używać 'do ucieczki apostrofów. Chociaż mogę sobie wyobrazić, że w rzeczywistości miałeś na myśli apostrof, a nie pojedynczy cytat.

pojedyncze cudzysłowy i apostrofy różnią się semantycznie, chociaż mogą wyglądać tak samo.

Oto jeden apostrof.

Użyj, 'aby go wstawić, jeśli potrzebujesz obsługi HTML4.(zredagowano)

W brytyjskim angielskim pojedyncze cudzysłowy są używane w następujący sposób:

„Powiedział mi, żebym spróbował” - powiedziałem.

Cytaty występują w parach. Możesz użyć:

<p><q>He told me to <q>give it a try</q></q>, I said.<p>

mieć zagnieżdżone cudzysłowy w poprawny semantycznie sposób, odraczając podstawianie rzeczywistych znaków do silnika renderującego. Na to podstawienie mogą mieć wpływ reguły CSS , takie jak:

q {
  quotes: '"' '"' '<' '>';
} 

Stary, ale pozornie wciąż aktualny artykuł o poprawnym semantycznie oznaczaniu: The Trouble With EM 'n EN (and Other Shady Characters) .

(zredagowano) To było:

Użyj ', aby wstawić, jeśli potrzebujesz obsługi HTML4.

Ale, jak zauważył @James_pic, nie jest to prosty pojedynczy cudzysłów, ale „Pojedynczy zakrzywiony cudzysłów, prawda”.

R. Schreurs
źródło
Pytanie dotyczyło wyraźnie apostrofów, a nie cudzysłowów. Dlaczego miałbyś to opublikować?
Alex Skrypnyk
9
W tytule wyraźnie widzę pojedynczy cytat . Pytanie brzmiało, dlaczego ucieczka od nich nie powinna odbywać się za pomocą & apos; . Odpowiedziałem na to, ponieważ wsparcie dla & apos; nie jest jedynym problemem.
R. Schreurs
3
Pojedyncze cudzysłowy są używane w ten sposób również w amerykańskim angielskim.
Rob_vH
Powinna to być akceptowana odpowiedź, ponieważ wyjaśnia, że ​​apostrofy i pojedyncze cudzysłowy to nie to samo i dlatego nie należy używać apostrofów do umieszczania wartości atrybutu HTML.
delroh
W standardzie Unicode apostrof (& # 39;) jest klasyfikowany jako cudzysłów i jest jedyną formą „prostego” cudzysłowu w specyfikacji. Porada dotycząca korzystania z & # 8217; jest w najlepszym przypadku niekompletny, ponieważ taki jest znak wyrażenia „Pojedynczy cudzysłów zakrzywiony, prawda”. Jeśli naprawdę zależy ci na poprawności semantycznej, powinieneś używać jej w odpowiednich cudzysłowach, a & # 8216; („Pojedynczy zakrzywiony cudzysłów, po lewej”) należy używać w lewym cudzysłowie.
James_pic
2

Jeśli naprawdę potrzebujesz pojedynczych cudzysłowów, apostrofów, możesz użyć

html    | numeric | hex
&lsquo; | &#145;  | &#x91; // for the left/beginning single-quote and
&rsquo; | &#146;  | &#x92; // for the right/ending single-quote
Jeff
źródło
-2

W moim przypadku był to błąd, gdy próbowałem użyć cytatu w tekście Time's up! . Eslint ostrzegł.

Aby to naprawić, zamieniłem cytat na Time&apos;s up!. Wynik jest zgodny z oczekiwaniami

Sabit Rakhim
źródło