stringtranslate.com

Referencia de caracteres numéricos

Una referencia de caracteres numéricos ( NCR ) es una construcción de marcado común utilizada en SGML y lenguajes de marcado derivados de SGML, como HTML y XML . Consiste en una breve secuencia de caracteres que, a su vez, representa un único personaje. Desde WebSgml , XML y HTML 4 , se utilizan los puntos de código del Juego de Caracteres Universal (UCS) de Unicode . Los NCR se utilizan normalmente para representar caracteres que no se pueden codificar directamente en un documento en particular (por ejemplo, porque son caracteres internacionales que no caben en el juego de caracteres de 8 bits que se utiliza, o porque tienen un significado sintáctico especial en el idioma). Cuando un lector consciente del marcado interpreta el documento, cada NCR se trata como si fuera el carácter que representa.

Ejemplos

En SGML, HTML y XML, las siguientes son referencias de caracteres numéricos válidos para la letra mayúscula griega Sigma.

En SGML, HTML y XML, las siguientes son referencias de caracteres numéricos válidos para la letra mayúscula latina AE

En SGML, HTML y XML, las siguientes son referencias de caracteres numéricos válidos para la letra minúscula latina aguda s ß

Lista de referencias de caracteres numéricos para los caracteres ASCII imprimibles:

Discusión

Los lenguajes de marcado generalmente se definen en términos de caracteres UCS o Unicode. Es decir, un documento consta, en su nivel más fundamental de abstracción, de una secuencia de caracteres, que son unidades abstractas que existen independientemente de cualquier codificación .

Idealmente, cuando los caracteres de un documento que utilizan un lenguaje de marcado se codifican para su almacenamiento o transmisión a través de una red como una secuencia de bits , la codificación que se utilice será aquella que admita la representación de todos y cada uno de los caracteres del documento, si no del todo Unicode, directamente como una secuencia de bits particular.

Sin embargo, a veces, por motivos de comodidad o limitaciones técnicas, los documentos se codifican con una codificación que no puede representar algunos caracteres directamente. Por ejemplo, las codificaciones ampliamente utilizadas basadas en ISO 8859 solo pueden representar, como máximo, 256 caracteres únicos en un byte de 8 bits cada uno.

En la práctica, rara vez se permite que los documentos utilicen más de una codificación interna, por lo que la responsabilidad suele recaer en el lenguaje de marcado para proporcionar un medio para que los autores de los documentos expresen caracteres no codificables en términos de codificables. Esto generalmente se hace mediante algún tipo de mecanismo de "escape" .

Los lenguajes de marcado basados ​​en SGML permiten a los autores de documentos utilizar secuencias especiales de caracteres del rango ASCII (los primeros 128 puntos de código de Unicode) para representar o hacer referencia a cualquier carácter Unicode, independientemente de si el carácter que se representa está disponible directamente en el codificación del documento. Estas secuencias especiales son referencias de personajes .

Las referencias de caracteres que se basan en el punto de código UCS o Unicode del carácter al que se hace referencia se denominan referencias de caracteres numéricos . En HTML 4 y en todas las versiones de XHTML y XML, el punto de código se puede expresar como un número decimal (base 10) o como un número hexadecimal (base 16). La sintaxis es la siguiente:

Carácter U+0026 ( ampersand ), seguido del carácter U+0023 ( signo de número ), seguido de una de las siguientes opciones:

todo seguido del carácter U+003B ( punto y coma ). Las versiones anteriores de HTML no permitían la sintaxis hexadecimal.

Los caracteres que componen una referencia de caracteres numéricos se pueden representar en cada codificación de caracteres utilizada en informática y telecomunicaciones hoy en día, por lo que no hay riesgo de que la referencia en sí no pueda codificarse.

Existe otro tipo de referencia de carácter llamada referencia de entidad de carácter , que permite hacer referencia a un carácter mediante un nombre en lugar de un número. (Nombrar un carácter crea una entidad de carácter ). HTML define algunas entidades de carácter, pero no muchas; todos los demás caracteres solo se pueden incluir mediante codificación directa o mediante NCR.

Restricciones

El conjunto de caracteres universal definido por ISO 10646 es el "conjunto de caracteres de documento" de SGML, HTML 4, por lo que, de forma predeterminada, cualquier carácter en dicho documento, y cualquier carácter al que se haga referencia en dicho documento, debe estar en el UCS.

Si bien la sintaxis de SGML no prohíbe las referencias a puntos de código no válidos o no asignados, como , los lenguajes de marcado derivados de SGML, como HTML y XML, pueden restringir, y a menudo lo hacen, las referencias de caracteres numéricos solo a aquellos puntos de código que están asignados a caracteres.

También pueden aplicarse restricciones por otros motivos. Por ejemplo, en HTML 4, que es una referencia a un carácter de control de "avance de página" que no se imprime, está permitido porque se permite un carácter de avance de página. Pero en XML, el carácter de avance de página no se puede utilizar, ni siquiera como referencia. [1] [ cita necesaria ] Como otro ejemplo, €, que es una referencia a otro carácter de control, no se permite su uso ni referencia en HTML o XML, pero cuando se usa en HTML, generalmente no se marca como un error por navegadores web, algunos de los cuales lo interpretan como una referencia al carácter representado por el valor de código 128 en la codificación Windows-1252 por razones de compatibilidad. Este carácter, "€", debe representarse como €en un código HTML compatible con el estándar. Como ejemplo adicional, antes de la publicación de la segunda edición de XML 1.0 el 6 de octubre de 2000, XML 1.0 se basaba en una versión anterior de ISO 10646 y prohibía el uso de caracteres superiores a U+FFFD, excepto en datos de caracteres, haciendo así una referencia como 𐀀(U+10000) ilegal. En XML 1.1 y ediciones más recientes de XML 1.0, se permite dicha referencia porque el repertorio de caracteres disponible se amplió explícitamente.

Los lenguajes de marcado también imponen restricciones sobre dónde pueden ocurrir las referencias a caracteres.

Problemas de compatibilidad

En las versiones iniciales de SGML y HTML , las referencias de caracteres numéricos se interpretaban en relación con la codificación de caracteres del documento, en lugar de Unicode . Para documentos en escritura latina, las referencias de caracteres numéricos a caracteres entre x80 y x9F en esos documentos no serán correctas con Unicode y deben recodificarse. Los estándares HTML anteriores a HTML 4 solo admitían documentos con escritura latina occidental: el tratamiento de las referencias de caracteres superiores al #7F puede variar entre aplicaciones y convenciones nacionales.

Por ejemplo, como se mencionó anteriormente, la referencia de carácter numérico correcta para el signo del euro "€" U+20ACcuando se usa Unicode es decimal €y hexadecimal €. Sin embargo, si utiliza herramientas que admitan implementaciones obsoletas de HTML, la referencia € (signo del euro en la página de códigos CP-1252¤ ) o (signo del euro en ISO/IEC 8859-15 ) puede funcionar.

Como otro ejemplo, si algún texto se creó originalmente usando el juego de caracteres MacRoman , las comillas dobles izquierdas se representarán con el punto de código xD2. Esto no se mostrará correctamente en un sistema que espera un documento codificado como UTF-8, ISO 8859-1 o CP-1252, donde este punto de código está ocupado por la letra Ò . La referencia de caracteres numéricos correcta para en HTML 4 y versiones posteriores es “, porque U+ 201C es su código UCS. En algunos sistemas, la referencia del carácter nombrado “ también puede estar disponible.

Ver también

Referencias

  1. ^ "HTML 5.2: 8. La sintaxis HTML". www.w3.org .