Las codificaciones en un proyecto web

Más de una vez seguramente hemos codificado una página web y al migrarla de servidor nos empiezan a  aparecer caracteres un poco raros. Este es el mal de programas sitios en castellano con tantos caracteres no admitidos en las codificaciones más sencillas, y es que es normal que nos confundan porque hay que tener muchos factores en cuenta a la hora de codificar una aplicación:

  1. codificación de los datos en la base de datos.
  2. codificación de las cabeceras HTML.
  3. codificación de las cabeceras en PHP.
  4. codificación del código fuente.

Todas estas codificaciones anteriores deben ser iguales si no queremos tener nunca problemas, y mas recomendable aún es tenerlas todas en UTF-8.

Codificación de los datos en la base de datos

Para ello tenemos que especificar el collation de nuestro schema o base de datos y luego aplicar a cada una de las tablas y campos de estas el mismo collation evitando así inconsistencia en los datos, yo suelo utilizar para este caso utf8_general_ci.

Codificación de las cabeceras html

Muy simple y es colocar en nuestras páginas HTML el siguiente meta-tag:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Codificación de las cabeceras en php

Es muy importante este paso sobre todo en las páginas PHP que nos producen respuestas a peticiones realizadas en AJAX:

header("Content-type: text/html;charset=utf-8");

Si todas las codificaciones anteriores son correctas esta nos permite evitar el uso de funciones como utf8_encode y utf8_decode para trabajar con librerías como PHPExcel y XMLWriter.

Codificación del código fuente

Aquí ya entra a jugar el IDE o editor que utilicemos yo en mi caso particular siempre utilizo el Zend Studio y tengo codificados mis proyectos en utf-8 (a veces pierde la codificación y es necesario volver a cambiarla). Para cambiar la codificación de un proyecto web en el Zend Studio debemos ir a las propiedades de nuestro proyecto:

propiedades-proyecto

Y luego en esta ventana al fondo del todo cambiar esta por la codificación deseada:

codificacion-zend

Comentarios