2009-06-19 24 views

Respuesta

22

Dos cosas principales.

  1. Le permiten usar caracteres que no están definidos en un juego de caracteres actual. Por ejemplo, legalmente puede usar ASCII como juego de caracteres y aún incluir caracteres Unicode arbitrarios a través de entidades.
  2. Le permiten citar caracteres que HTML le da un significado especial, como señaló Simon.
+0

3. Le permiten usar caracteres que no puede ingresar directamente por alguna razón. Como un ejemplo simple, probablemente no pueda escribir la palabra "gräßlich" en su teclado, pero en su lugar no hay problema en escribir "gr ä ß lich". (Por supuesto, siempre puedes simplemente copiar y pegar las letras "ä" y "ß" de otro lugar, pero eso no está en ningún lado como sea conveniente.) –

+2

RegDwight, lo dejé a sabiendas. Es mejor aprender a escribirlo con su teclado/sistema operativo, o copiarlo si lo necesita solo esta vez.Las páginas/innecesariamente/llenas de entidades son molestamente difíciles de leer. –

14

"1 &lt; 2" le permite poner "1 < 2" en su página.

Respuesta larga:

Desde HTML utiliza '<' para abrir las etiquetas, no se puede simplemente escribir '<' si quieres que como texto. Por lo tanto, debe tener una forma de decir "Quiero el texto < en mi página". Quien diseñó HTML (o, en realidad, SGML, predecesor de HTML) decidió utilizar '&algo;', por lo que también puede poner cosas como espacio sin interrupciones: '&nbsp;' (espacios que no están contraídos o permiten un salto de línea) . Por supuesto, ahora necesita tener una forma de decir '&', por lo que obtiene '&amp;' ...

+1

+1: No olvide que le permite poner comillas dentro de los atributos, también. –

+0

Pero puedo escribir simplemente " Hans

3

Las entidades de caracteres se utilizan para representar caracteres que están reservados para escribir HTML for.ex. <,>, /, & etc, si se desea representar estos caracteres en su contenido que debe usar entidades de caracteres, esto ayudará a que el analizador distinguir entre el contenido y marcado

1

Se utilizan las entidades para ayudar a la el analizador distingue cuándo un personaje debe representarse como HTML, y lo que realmente desea mostrar al usuario, ya que HTML reservará un conjunto especial de caracteres para sí mismo.

Escribiendo esto literalmente en HTML

no me refiero a que de esa manera </sarcasmo >

hará que la etiqueta "</sarcasmo >" desaparezca,

p.ej

No quiero decir que de esa manera

como HTML no tiene una etiqueta definida como tal. En este caso, el uso de entidades permitirá que el texto se muestre correctamente.

p. Ej.

No, realmente!& lt;/sarcasmo & gt;

da

No, de verdad! </sarcasmo >

según lo deseado.

7

No son, aparte de &amp;, &lt;, &gt;, &quot; y probablemente &nbsp;. Para todos los demás personajes, solo usa UTF-8.

+0

Tenga en cuenta que '"' solo se necesita realmente en los atributos –

4

En SGML y XML no son solo para caracteres. Son un mecanismo de inclusión genérico, y su uso para caracteres especiales es solo uno de muchos casos.

<!ENTITY signature "<hr/><p>Regards, <i>&myname;</i></p>"> 
<!ENTITY myname "John Doe"> 

Este tipo de entidades no es útil para los sitios web, ya que sólo funcionan en el modo de XML, y no se puede usar el archivo DTD externa sin habilitar "validar" el modo de análisis en la configuración del navegador.


Las entidades se pueden ampliar recursivamente. Esto permite el uso de XML para el ataque de denegación de Serice llamado "Billion Laughs Attack".


Firefox utiliza entidades internamente (en XUL y tal) para la internacionalización y de la marca independiente mensajes (para hacer la vida más fácil para Flock y IceWeasel):

<!ENTITY hidemac.label "Hide &brandShortName;"> 
<!ENTITY hidewin.label "Hide - &brandShortName;"> 

En HTML sólo tiene &lt;, &amp; y &quot; para evitar ambigüedades entre el texto y el marcado.

Todas las otras entidades están básicamente obsoletas por las codificaciones Unicode y permanecen solo como una conveniencia (pero un buen editor de texto debe tener macros/fragmentos que puedan reemplazarlas).


En XHTML todas las entidades excepto los pocos básica son problemáticos, porque no funcionará con los analizadores XML independientes (por ejemplo &nbsp; no funcionará).

Para analizar todas las entidades XHTML que necesita validando Analizador XML (la opción se suele llamar "resolución externa") que es más lenta y necesita la configuración del DTD Catalog. Si ignora o arruina su catálogo de DTD, estará participando en el DDoS of W3C servers.

+0

Tenga en cuenta que esta respuesta confunde la terminología. La pregunta era sobre las entidades * character *, no las entidades * name *, * external * o * parameter *. – kjhughes

Cuestiones relacionadas