La tecla de acceso 'n' lleva a la navegación de la página. Ir al inicio del contenido.

Este documento es una traducción. En caso de discrepancias o errores, la única versión normativa es el último original en inglés. Los derechos de autor originales corresponden al W3C, como puede verse al final de la página.

Traductor: Spanish Translation Team, Spanish Translation US.

s_gotoW3cHome Internacionalización
 

Usar escapes de caracteres en etiquetas y CSS

Audiencia de destino: Los codificadores XHTML/HTML (usando editores o lenguaje de script), los desarrolladores de script (PHP, JSP, etc.) y todos aquellos que necesiten orientación acerca de cómo y cuándo utilizar las alternativas a los caracteres reales en un documento.

Pregunta

¿Cómo puedo utilizar el escape de caracteres en etiquetas y CSS y cuándo debo usarlos y cuándo no?

Respuesta

¿Qué tipos de escape de caracteres se pueden utilizar al etiquetar?

Puede utilizar un escape de caracteres para la representación de cualquier carácter Unicode en XML o en (X)HTML con caracteres ASCII únicamente.

Las distintas especificaciones le otorgan nombres distintos a estos conceptos. Por ejemplo, la especificación HTML5 denomina a las referencias de entidades de caracteres referencias de caracteres nombrados. Hemos elegido utilizar nombres para este artículo que esperamos que el lector pueda reconocer como diferentes y comprender su significado, independientemente de las variaciones que haya utilizado hasta el momento.

Las NCR (referencias de caracteres numéricos) y las referencias de entidades de caracteres son tipos de escape de caracteres utilizados al etiquetar. Por ejemplo, a continuación se describen diferentes formas de representar el carácter U+00A0 NO-BREAK SPACE (espacio sin división U+00A0).

(El carácter NO-BREAK SPACE (espacio sin división) parece un espacio; sin embargo, evita el ajuste de las líneas entre los caracteres de cualesquiera de los lados. En francés se utiliza comúnmente con signos de puntuación como los puntos y los signos de exclamación, que están precedidos por un espacio pero no deben aparecer al comienzo de una línea durante el ajuste del texto.

 
NCR hexadecimal. Todas las NCR comienzan con &# y terminan con ;. La x indica que lo que sigue es un número hexadecimal que representa el valor del punto de codificación de un carácter Unicode. El número hexadecimal no distingue mayúsculas de minúsculas.
Ejemplo: <p>Vive la France&#xA0;!</p>
&#160;
NCR decimal. Esto utiliza un número decimal para representar el mismo punto de codificación Unicode.
Ejemplo: <p>Vive la France&#160;!</p>
&nbsp;
Referencia de entidad de caracteres. Es un tipo muy diferente de escape. Las referencias de entidades de caracteres se describen en la definición del lenguaje de marcas. Significa, por ejemplo, que en el caso de HTML sólo es posible representar una extensión específica de caracteres (definidos por la especificación HTML) como referencias de entidades de caracteres (y que incluye sólo un pequeño set secundario de la extensión Unicode). Tenga en cuenta que el nombre de la entidad distingue mayúsculas de minúsculas: en HTML, &Aacute; representa la letra mayúsculaÁ, mientras que &aacute; representa la minúscula á.
Ejemplo: <p>Vive la France&nbsp;!</p>
Algunos navegadores le permiten omitir el punto y coma al final de la referencia numérica de carácter, pero no se recomienda ya que puede derivar en problemas de interoperabilidad. El uso de punto y coma también evita el posible problema de que el final del escape se vuelva indetectable cuando el escape es incrustado en el texto.

Cabe mencionar especialmente que los valores de las referencias de caracteres numéricos (como &#x20AC; o &#8364; para el signo euro ) se interpretan como caracteres Unicode, sin importar la codificación que utilice para su documento. Un error habitual que cometen aquellas personas que trabajan con contenidos codificados en la página de códigos 1252 de Windows, por ejemplo, es tratar de representar el signo euro con&#x80;. Esto ocurre debido a que el euro aparece en la posición 80 (en hexadecimal) en la página de códigos 1252 de Windows. Si se utiliza &#x80; en HTML, en realidad deberá obtenerse un carácter de control, debido a que el escape se debería expandir como el carácter en la posición 80 del repertorio Unicode. (En realidad, los exploradores tienden a corregir ese error de manera silenciosa. Consulte las páginas de prueba).

Escapes CSS

CSS representa caracteres escapados de manera diferente. Para representar un carácter, comience con una barra invertida seguida de un número hexadecimal que represente el valor del punto de codificación Unicode del carácter.

Si hay un carácter siguiente que no está en el rango A–F, a–f ni 0–9, eso es todo lo que necesita. El siguiente ejemplo representa la palabra emoción.

Ejemplo: .\E9motion { ... }

Si, por otra parte, el siguiente ejemplo es uno que puse ser utilizado en número hexadecimales, no quedará claro dónde se encuentra el final del número. En estos casos hay dos opciones. La primera es utilizar un espacio después del escape. Este espacio es parte de la sintaxis del escape y no permanece después de que el escape es analizado. El siguiente ejemplo muestra cómo puede representar la palabra edición.

Ejemplo: .\E9 dition { ... }

Alternativamente, puede utilizar un número hexadecimal de 6 dígitos, con o sin espacio. Ésta es una forma alternativa de escribir edición.

Ejemplo: .\0000E9dition { ... }

Debido a que cualquier espacio en blanco después de un número hexadecimal es tragado como parte del escape, si realmente quiere que un espacio aparezca luego del carácter escapado, deberá agregar dos espacios (luego de un número hexadecimal de cualquier longitud).

La barra invertida también puede ser utilizada en CSS antes de un carácter de sintaxis para evitar que sea leída como parte del código. Para obtener información sobre escapes CSS, consulte la especificación CSS 2.1.

Cuándo no se deben utilizar escapes

Casi siempre es preferible utilizar una codificación que le permita representar los caracteres en su forma habitual, en lugar de utilizar referencias de entidades de caracteres o NCR.

La utilización de escapes puede dificultar la lectura y el mantenimiento del código fuente y, además, puede aumentar el tamaño del archivo de manera significativa.

Muchos desarrolladores angloparlantes tienen la expectativa de que otros idiomas sólo utilicen de manera ocasional los caracteres diferentes a ASCII, pero esto no es así.

Por ejemplo, analicemos las siguientes oraciones en checo.

Jako efektivnější se nám jeví pořádání tzv. Gira prostřednictvím našich autorizovaných dealerů v Čechách a na Moravě, které proběhnou v průběhu září a října.

Si necesitara una NCR para todos los caracteres diferentes a ASCII, las oraciones serían incomprensibles, difíciles de mantener y mucho más largas. Por supuesto, sería mucho peor para un idioma que no utilizara caracteres latinos en absoluto.

Jako efektivn&#x115;j&#x161;&#xED; se n&#xE1;m jev&#xED; po&#x159;&#xE1;d&#xE1;n&#xED; tzv. Gira prost&#x159;ednictv&#xED;m na&#x161;ich autorizovan&#xFD;ch dealer&#x16F; v &#x10C;ech&#xE1;ch a na Morav&#x11B;, kter&#xE9; prob&#x11B;hnou v pr&#x16F;b&#x11B;hu z&#xE1;&#x159;&#xED; a &#x159;&#xED;jna.

Como dijimos anteriormente, utilice caracteres en lugar de escapes para textos comunes.

Utilización en XHTML. La utilización de referencias de entidades en un documento que es analizado como XML puede tornarse problemática si las entidades se definen externamente a su documento y las herramientas que procesan el XML no leen los archivos externos. En tales casos, las referencias de entidades no se reemplazarán por caracteres. Por ese motivo, si necesita utilizar escapes, puede resultar más seguro utilizar referencias de caracteres numéricos o definir las entidades de caracteres que necesita dentro del documento.

Si utiliza referencias de entidades de caracteres definidas por HTML (por ejemplo, &aacute;) para representar caracteres en XHTML, debe tener cuidado cada vez que procese el contenido con analizadores XML u otras herramientas.

Cuándo se deben utilizar escapes

Caracteres de sintaxis. Existen tres caracteres que siempre deben aparecer en los contenidos como escapes, de manera de que no interactúen con la sintaxis del etiquetado. Forman parte del lenguaje de todos los documentos basados en XML y para HTML.

Es posible que también quiera representar las comillas dobles (") como &cita y la comilla simple (') como &apóstrofo, en particular en los textos con atributos cuando deba utilizar el mismo tipo de comillas que las que rodean el valor del atributo. Sin embargo, recuerde que aunque sea parte del lenguaje XML, &el apóstrofo no está definido en HTML 4.01 y algunos navegadores no admiten el &apóstrofo en HTML. Por este motivo, la especificación XHTML recomienda en su lugar la utilización de &#39; si es posible pasar el texto a un navegador de HTML.

Diferencias de codificación. Los escapes pueden ser útiles a fin de representar caracteres que no sean compatibles con la codificación que elija para el documento, por ejemplo, a fin de representar caracteres chinos en un documento ISO Latín 1. Sin embargo, primero se debe preguntar por qué no ha cambiado la codificación del documento por alguna que comprenda todos los caracteres que necesita (como UTF-8, por supuesto).

Problemas de ingreso. Si su herramienta de edición no le permite ingresar fácilmente los caracteres que necesita, es posible que además deba recurrir al uso de escapes. Tenga en cuenta que no es una solución a largo plazo ni funciona correctamente si debe ingresar muchos caracteres de ese tipo, debido a que requiere más tiempo y hace que el mantenimiento sea más difícil. Sería ideal que elija una herramienta de edición que le permitiera ingresar estos caracteres como tales. Como alternativa, si sólo necesita el carácter ocasional, utilice una herramienta de mapa de caracteres o un selector de caracteres.

Caracteres invisibles o ambiguos. Una función particularmente útil para los escapes es la representación de caracteres que sean invisibles o ambiguos en su presentación.

Un ejemplo sería el carácter Unicode 200F: RIGHT-TO-LEFT MARK (signo de derecha a izquierda). Este carácter se puede utilizar a fin de clarificar la direccionalidad en un texto bidireccional (por ejemplo, cuando se utilicen sistemas de escritura arábigos o hebreos). No tiene forma gráfica; sin embargo, es por eso que es difícil observar el lugar donde se encuentran estos caracteres en el texto y, si se pierden o se olvidan, podrían ocasionar resultados inesperados durante la edición posterior. Si en cambio utiliza &rlm; (o su equivalente de NCR &#x200F;), será más fácil encontrar estos caracteres.

Un ejemplo de un carácter ambiguo lo constituye el 00A0: NO-BREAK SPACE (espacio sin división). Este tipo de espacio evita la división de líneas; sin embargo, luce como cualquier otro espacio cuando se lo utiliza como un carácter. La utilización de &nbsp; (o &#xA0;) aclara bastante el lugar donde dichos espacios aparecen en el texto.

Uso de escapes en atributos de estilo

Es mejor elegir la codificación adecuada para que pueda usar spolo los caracteres en las declaraciones CSS. Esta sección se encarga de lo que debería ser una circunstancia muy rara donde es posible que haya decidido usar escapes.

Suele ser una buena idea colocar información de estilo en un enlace en la hoja de estilo a un elemento de style en el encabezado de un archivo XHTML o HTML. Ocasionalmente, o quizás en forma provisoria, en su lugar puede usar un atributo de style en un elemento particular. Aún más extraño, puede querer representar uno o más caracteres en el atributo de style utilizando los escapes de caracteres.

Un atributo de style en XHTML o HTML puede representar caracteres usando escapes CSS, NCR o entidades. Por otra parte, es posible que el elemento de style en HTML no contenga ni NCR ni entidades, y lo mismo se aplica a una hoja de estilo externa.

Debido a que existe una tendencia a querer mover estilos declarados en atributos al elemento de estilo o una hoja de estilo externa (por ejemplo, esto se puede realizar de manera automática utilizando una aplicación o sistema de escritura), lo más seguro es utilizar sólo escapes CSS.

Por ejemplo, es mejor usar sólo

<span style="font-family: L\FC beck">...</span>

que

<span style="font-family: L&#xFC;beck">...</span>

A propósito

El cambio a UTF-8 significa volver a guardar su archivo. La utilización de codificación como UTF-8 significa que puede evitar la necesidad de la mayoría de los escapes y trabajar simplemente con caracteres. Sin embargo, para cambiar la codificación de su documento, no es suficiente con sólo cambiar la declaración de codificación al principio de la página o en el servidor. Deberá volver a guardar su documento con esa codificación. Para comprender mejor la manera en la que lo puede hacer con su aplicación, consulte Configuración de codificaciones en aplicaciones de autoría web.

Hexadecimal versus decimal. En general, cuando el Estándar Unicode define o enumera caracteres, lo hace por medio de un valor hexadecimal. Por ejemplo, es posible que al punto de codificación correspondiente a la letra á se denomine U+00E1. Dada la prevalencia de esta convención, suele ser útil, aunque no es obligatoria, la utilización de valores numéricos hexadecimales en los escapes en lugar de valores decimales. No es necesario que utilice ceros iniciales en los escapes, es decir, la letra á podría estar representada como &#xE1;.

Caracteres complementarios. Los caracteres complementarios son aquellos caracteres Unicode que tienen puntos de codificación mayores que los caracteres del Plano Plurilingüe Básico (BMP) En UTF-16, un carácter complementario se codifica con dos puntos de codificación de 16 bits derivados del BMP. Por ese motivo, algunas personas creen que los caracteres complementarios deben representarse con dos escapes; sin embargo, esto es incorrecto. Debe utilizar un valor del punto de codificación único para ese carácter. Por ejemplo, utilice &#x233B4; en lugar de &#xD84C;&#xDFB4;.

Signos únicos de "y" (&). Aunque los agentes de usuarios de HTML han tratado de ignorarlo, nunca debe tener un único signo de "y" (&) en su documento. Debe prestar especial atención a los Identificadores Uniformes de Recursos (URI) que incluyan parámetros. Por ejemplo, su documento puede contener http://example.org/my-script.php?class=guest&amp;name=user, en lugar de http://example.org/my-script.php?class=guest&name=user.

Dinos qué piensas (en Inglés).

Suscripción a feed RSS.

Nuevos recursos

Noticias de la página de inicio

Twitter (Noticias de la página de inicio)

‎@webi18n

Lecturas complementarias

De: Richard Ishida, W3C. Traductor: Spanish Translation Team, Spanish Translation US..

XHTML 1.0 válido
CSS válido
Codificado en UTF-8

Traducido del inglés con fecha 2010-08-12. Traducción modificada por última vez el 2011-04-18 14:03 GMT.

Para ver el historial de cambios del documento, busque qa-escapes en la bitácora de internacionalización.