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, Trusted Translations, Inc.

s_gotoW3cHome Internacionalización
 

Selección & aplicación de codificación de caracteres

Audiencia de destino: codificadores de XHTML/HTML (que usen editores o lenguaje de script), desarrolladores de sistemas de escritura (PHP, JSP, etc.), codificadores de CSS, gerentes de proyectos web, y todo aquel que se inicie en el tema y quiera conocer los principios básicos del proceso de selección y aplicación de codificación de caracteres.

Nota: Desde la traducción de este documento se han producido modificaciones en el original en Inglés. Consulte el registro de cambios.

Pregunta

¿Qué tipo de codificación de caracteres debo usar y cómo se aplica al contenido que estoy creando?

Información preliminar

El contenido está compuesto por una secuencia de caracteres. Los caracteres representan letras del alfabeto, signos de puntuación, etc. Sin embargo, el contenido se almacena en la computadora en forma de secuencias de bytes, que son valores numéricos. En algunos casos, se utiliza más de un byte para representar un solo carácter. Al igual que los códigos que se utilizan en el mundo del espionaje, la forma de convertir dicha secuencia de bytes en caracteres depende de la clave empleada para codificar el texto. En este contexto, dicha clave se denomina codificación de caracteres.

Existen varios tipos de codificaciones de caracteres para elegir. En este artículo se incluyen algunas recomendaciones acerca de qué codificación de caracteres utilizar para cada tipo de contenido y cómo aplicarla, es decir, cómo producir efectivamente un documento en el que se emplee dicha codificación.

Para comprender en mayor profundidad el concepto de caracteres y codificación de caracteres, consulte el artículo Codificación de caracteres para principiantes.

Respuesta

Siempre que sea posible, use UTF-8

Una página HTML admite solamente una forma de codificación. No es posible codificar diferentes partes de un documento con distintas formas de codificación.

Una codificación Unicode, como UTF-8, soporta varios idiomas e incluso combinaciones de dichos idiomas en páginas y formularios. Su aplicación también permite eliminar la necesidad de lógica del lado del servidor para establecer individualmente la codificación de caracteres de cada página que se ejecuta o de cada formulario que se ingresa. Esto reduce significativamente la complejidad del manejo de sitios o aplicaciones plurilingües.

La codificación Unicode también permite combinar muchos más idiomas en una sola página que cualquier otra alternativa de codificación.

En la actualidad, prácticamente no existen barreras en el uso de la codificación Unicode. De hecho, en agosto de 2010, Google informó que de su muestra compuesta por miles de millones de páginas, más del 50% de la Web utilizaba actualmente la codificación UTF-8. Si consideramos, además, las páginas web codificadas exclusivamente en ASCII (ya que ASCII es un subgrupo de UTF-8), la cifra asciende aproximadamente al 70%.

Existen tres codificaciones de caracteres Unicode diferentes: UTF-8, UTF-16 y UTF-32 (consultar Set de caracteres, set de caracteres codificados y codificaciones). De estas tres variantes, UTF-8 es la recomendada para utilizar con contenidos web. De hecho, la versión preliminar de la especificación HTML5 actualmente establece: "Se alienta a los creadores de contenido a utilizar UTF-8. Los mecanismos de verificación deben desaconsejar el uso de métodos de codificación antiguos. Las herramientas de autoría deben emplear UTF-8 de manera predeterminada para la generación de documentos nuevos."

Se debe tener en cuenta, particularmente, que todos los caracteres ASCII en UTF-8 utilizan exactamente los mismos bytes que en la codificación ASCII, lo que generalmente favorece la interoperatividad y retrocompatibilidad.

El soporte para determinada codificación, especialmente un tipo de codificación como Unicode, no necesariamente implica que un agente de usuario pueda visualizar el texto de manera correcta. Muchos sistemas de escritura, como el árabe o el índico, requieren reglas adicionales para transformar la secuencia de caracteres en memoria en una secuencia adecuada de glifos de fuentes que se pueda visualizar.

Si no usa Unicode. Seleccione una codificación que permita maximizar la posibilidad de representar caracteres en forma directa y minimizar la necesidad de utilizar escapes de caracteres.

Cuando deba elegir específicamente un idioma, sistema de escritura o grupo de idiomas, seleccione la codificación que tenga el nivel de soporte más amplio y verifique que los agentes de usuario puedan soportar de manera adecuada el método de codificación elegido.

Opte por una solución que minimice la complejidad cuando trabaje con múltiples idiomas y sistemas de escritura.

Codificaciones que se deben evitar

La especificación HTML5 señala una serie de codificaciones que se deben evitar.

Los documentos no deben usar JIS_C6226-1983, JIS_X0212-1990, HZ-GB-2312, JOHAB (página de códigos 1361 de Windows), codificaciones basadas en ISO-2022 o en EBCDIC. Esto se debe a que los elementos mencionados permiten que los puntos de codificación ASCII representen caracteres distintos de ASCII, lo que genera un riesgo en términos de seguridad.

Los documentos no deben utilizar codificaciones CESU-8, UTF-7, BOCU-1, ni SCSU, ya que no fueron concebidas para contenido web.

La especificación mencionada también desaconseja el uso de UTF-32.

Aplicación de una codificación al contenido

Como creador de contenido, debe verificar que el editor o sistema de escritura guarde el texto con la codificación seleccionada.

Los desarrolladores también deben asegurarse de que las diversas partes del sistema puedan comunicarse entre sí, comprender las codificaciones de caracteres que se utilizan y admitir todas las codificaciones y caracteres necesarios.

Es importante tener presente que, en general, el simple hecho de declarar una codificación dentro de un documento o en el servidor con uno de los métodos que se describen a continuación, no modificará los bytes. Es necesario guardar el texto con dicha codificación para poder aplicarla al contenido. (La declaración simplemente ayuda al navegador a interpretar las secuencias de bytes en las que se almacena el texto).

En el artículo Cómo definir la codificación en aplicaciones de autoría web se incluyen recomendaciones sobre cómo guardar una página con determinada codificación en distintos entornos de edición.

Siempre que sea posible, lo más recomendable es definir en el editor una codificación como UTF-8 como configuración predeterminada para todo documento nuevo. La siguiente imagen muestra cómo definir esta alternativa dentro de las preferencias de un editor como DreamWeaver.

Entre las opciones de preferencias para documentos nuevos, DreamWeaver permite especificar una codificación predeterminada.

Es posible que también deba verificar que el servidor esté ejecutando los documentos con las declaraciones HTTP correctas; de lo contrario, se anulará la información del documento entrante (ver la siguiente sección).

¿Por qué el navegador no reconoce la codificación?

Supongamos, por ejemplo, que guardó los datos como UTF-8. Aunque haya guardado la información con la codificación correcta y haya incluido en la página la declaración correspondiente para indicar que la codificación utilizada era UTF-8, es posible que el servidor esté ejecutando la página con un encabezado HTTP que señale que se trata de otra cosa.

Cualquier declaración en el encabezado HTTP anulará la información incluida en la página, lo que generará problemas con el contenido.

Es posible que no tenga control sobre las declaraciones incluidas en el encabezado HTTP y que deba contactar al administrador del servidor para solicitar asistencia. Por otro lado, en algunos casos puede resolver usted mismo algunas cuestiones en el servidor si cuenta con acceso limitado a los archivos de configuración del servidor o si genera páginas mediante lenguajes de script. Por ejemplo, consulte Configuración del parámetro charset de HTTP para más información acerca de cómo modificar los datos de codificación, ya sea en forma local para un grupo de archivos en un servidor o para contenido generado a partir de un lenguaje de script.

Generalmente, antes de hacerlo, debe verificar si esto es efectivamente la causa del problema o no. Puede usar la herramienta Verificador de codificación de W3C para detectar qué codificación de caracteres se encuentra especificada en el encabezado HTTP, si la hubiera. Además, el artículo Verificación de encabezados HTTP indica otras herramientas para verificar la información de codificación que procesa el servidor.

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, Trusted Translations, Inc..

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 2010-10-12 16:48 GMT.

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