Вы находитесь на странице: 1из 3

Tecnologas Web

Jose Pimentel Mesones

Normalizacin en HTML
En Unicode es podemos conseguir con diferentes caracteres, por ejemplo, la palabra en hngaro vilg.
Como vemos la cuarta letra lleva un acento, y esto nos permite que la codifiquemos como un U+00E1
precompuesto es decir, un solo caracter con una a minscula y un acento agudo, o bien como U+0061 +
U+0301 que representa una secuencia de dos caracteres, una a minscula y el acento:

Aunque se permiten estas dos opciones, el estndar UNICODE requiere que ambos sean tratados como
iguales. Para mejorar la efectividad se suele normalizar el texto antes de realizar bsquedas o
comparaciones. Es decir, convertir el texto para usar todos los caracteres precompuestos o todos los
descompuestos.

Existen cuatro formas de normalizacin especificadas por el Estndar Unicode:

1. NFC
2. NFD
3. NFKC
4. NFKD

Donde C representa (pre-)compuesto y la D, descompuesto.

Desafortunadamente, la normalizacin no siempre se lleva a cabo antes de comparar el contenido. Un


caso particularmente importante es el uso de identificaciones en HTML y selectores en CSS. Si usamos
"vilg" se usa en una forma precompuesta en HTML:

<span class="vilg">

pero en la forma descompuesta en CSS:

.vilg { font-style: italic; }

el selector no va a coincidir con el nombre de clase.


La mejor forma de asegurar que coincidan es utilizar una forma particular de normalizacin Unicode para la
autora de todo contenido.

BOM (byte-order mark)


Es una secuencia de byte que podemos encontrar al principio de los textos que usen una codificiacin
UNICODE.

Antes de UTF-8 , a principios de 1993, la forma de transferir textos UNICODE usaba unidades de 16-bit,
utilizando una codificacin denominada UCS-2, que se extendi luego a UTF-16. Estas unidades se
pueden expresar como bytes de dos maneras: big-endian o little-endian.

Para comunicar qu orden de bytes estaba en uso, se utiliz U + FEFF (BOM) al inicio como un nmero
mgico que no es lgicamente parte del texto a transmitir.

El cuadro siguiente muestra los bytes usados en una secuencia de caracteres de dos bytes:

Cada nmero hexadecimal de 2 dgitos representa un byte en el flujo de texto. Se puede ver que el orden
de los dos bytes que representan un solo carcter se invierte para big endian respecto a little endian.

La marca de orden de bytes indica en qu orden se utiliza, por lo que las aplicaciones pueden decodificar
el contenido inmediatamente.

En UTF-8, ya no es necesario el uso de BOM, al no existir alternativas al codificar un caracter, no obstante


esta marca puede aparecer en esta codificacion, ya se como resultado de reconversiones o bien producto
de algunos editores que de esta forma marcan el texto como codificado en UTF-8, en este caso la marca
BOM pasa a llamarse UTF-8 signature.

Implicaciones en el desarrollo WEB


Normalizacion:

La normalizacin es algo que se debe tener en cuenta si est en la autora de pginas HTML con hojas de
estilo CSS en UTF-8, particularmente si se debe tratar con texto de script que emplea acentos u otros
diacrticos. W3C recomienda el uso de texto NFC normalizado en la Web.

Para saber si nuestras aplicaciones web estn normalizadas de acuerdo al NFC podemos usar el
Verificador internacional de W3C.

BOM:

El BOM UTF-8 es una buena solucin para una deteccin fiable de codificacin, ya que es
extremadamente corto y estable, ademas funciona en XML y HTML, tanto si su pgina se lee en la red o
no (a diferencia de las declaraciones HTTP).

Sin embargo, tener en cuenta que siempre es una buena idea para declarar la codificacin de su pgina
usando el elemento meta, adems de la marca BOM, as la codificacin es evidente para las personas que
buscan en el texto de origen.

Aunque su uso puede causar efectos no deseados en las siguientes situaciones, sobre todo porque es
invisible:

1. PHP: Si se incluye algn archivo externo en una pgina utilizando PHP y ese archivo comienza con la
marca BOM puede crear lneas en blanco.

2. Procesamiento con cdigo de programa: Cuando se usan en scripts o cdigos de programas para
procesar automticamente los archivos que comienzan con BOM. Para evitarlo, la comparacin de
patrones en el inicio de un archivo deben preveer que podra comienza con con la marca e ignorarlo si
se encuentra.

3. Precedencia HTTP: Gracias a los cambios introducidos con HTML5, la marca de orden de bytes
anula cualquier declaracin de codificacin en el encabezado HTTP cuando se detecta la codificacin
de una pgina HTML. Esto puede ser muy til cuando el autor de la pgina no puede controlar la
configuracin de la codificacin de caracteres del servidor, y el servidor de pginas est declarando
estar en una codificacin que no sea UTF-8.

Aunque actualmente no todos los navegadores soportan esta caracterstica.

Вам также может понравиться