¿Por qué no deberían usarse `& apos;` para escapar de comillas simples?


158

Como se indica en, ¿ Cuándo se hicieron tan populares las comillas simples en HTML? y la cita incrustada de Jquery en el atributo , la entrada de Wikipedia en HTML dice lo siguiente:

El carácter de comillas simples ('), cuando se usa para citar un valor de atributo, también debe escaparse como 'o '(NO debe escaparse como 'excepto en los documentos XHTML) cuando aparece dentro del valor del atributo mismo.

¿Por qué no se 'debe usar? Además, ¿es "seguro usarlo en lugar de "?



77
Tenga en cuenta que IE8 no es compatible '.
Paul D. Waite

Respuestas:


178

"está en la lista oficial de entidades HTML 4 válidas , pero 'no lo está.

De C.16. La referencia del personaje nombrado ' :

La referencia de caracteres nombrada ' (el apóstrofe, U + 0027) se introdujo en XML 1.0 pero no aparece en HTML. Por lo tanto, los autores deben usar en 'lugar de 'trabajar como se esperaba en los agentes de usuario HTML 4.


3
"está en la lista, así que debería estar bien.
Bennett McElwee

9
Hoy sucedió eso en una máquina IE8 & apos; no se analizó, por lo que el usuario ve el código. Reemplazar con & # 39; resuelve el problema.
Michele Gargiulo

9
& aquot; NO es sustituto de & apos; como uno individual y el otro doble.
RichardTheKiwi

FYI: HTML5 es compatible con ambas entidades
Tarol


29

" es válido tanto en HTML5 como en HTML4.

'es válido en HTML5 , pero no HTML4 . Sin embargo, la mayoría de los navegadores admiten 'HTML4 de todos modos.


10
Tenga en cuenta que IE 8 no es compatible '.
Paul D. Waite

17

Si tiene que escribir semánticamente correcta recargo, incluso en HTML5, debe no utilizar 'para escapar comillas simples. Aunque, me imagino que en realidad querías decir apóstrofe en lugar de comillas simples.

Las comillas simples y los apóstrofes no son lo mismo, semánticamente, aunque podrían parecer lo mismo.

Aquí hay un apóstrofe.

Úselo 'para insertarlo si necesita compatibilidad con HTML4. (editado)

En inglés británico, las comillas simples se usan así:

"Me dijo que lo intentara", le dije.

Las cotizaciones vienen en pares. Puedes usar:

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

tener comillas anidadas de una manera semánticamente correcta, aplazando la sustitución de los caracteres reales al motor de renderizado. Esta sustitución puede verse afectada por reglas CSS , como:

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

Un artículo antiguo pero aparentemente relevante sobre el marcado semánticamente correcto: The Trouble With EM 'n EN (y otros personajes sombríos) .

(editado) Esto solía ser:

Use 'para insertarlo si necesita compatibilidad con HTML4.

Pero, como señaló @James_pic, esa no es la comilla simple, sino la "Comilla curva simple, derecha".


La pregunta era claramente sobre el uso de apóstrofes y no comillas. ¿Por qué publicarías esto?
Alex Skrypnyk

9
Claramente veo una cita simple en el título. La pregunta era por qué escapar de ellos no debería hacerse con & apos; . Respondí esto porque el soporte para & apos; No es la única preocupación.
R. Schreurs

3
Las comillas simples también se usan en inglés americano.
Rob_vH

Esta debería ser la respuesta aceptada, ya que aclara que el apóstrofe y las comillas simples no son lo mismo y es por eso que no debe usar apóstrofes para encerrar un valor de atributo HTML.
delroh

En Unicode, el carácter de apóstrofe (& # 39;) se clasifica como una comilla, y es la única forma de comillas "rectas" en la especificación. El consejo para usar & # 8217; está, en el mejor de los casos, incompleto, porque ese es el carácter de "Comilla curva simple, derecha" Si realmente busca la corrección semántica, debe usarse para las comillas correctas, mientras que & # 8216; ("Comilla simple curva, izquierda") debe usarse para las comillas izquierdas.
James_pic

2

Si realmente necesita comillas simples, apóstrofes, puede usar

html    | numeric | hex
&lsquo; | &#145;  | &#x91; // for the left/beginning single-quote and
&rsquo; | &#146;  | &#x92; // for the right/ending single-quote

-2

En mi caso, fue un error cuando intenté usar la cita en el texto Time's up! . Hubo una advertencia de Eslint.

Para solucionarlo, reemplacé la cita con Time&apos;s up!. El resultado es el esperado

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.