Codificación con el charset UTF-8 e internacionalización de caracteres

UTF-8(8-bit Unicode Transformation Format) es una norma de transmisión de longitud variable para caracteres codificados utilizando Unicode que nos permite representar caracteres de todo el mundo. Es una implementación de Unicode más como UTF-16 o UTF-32. En teoría nos va a permitir crear nuestras páginas web sin preocuparnos de acentos y caracteres extraños ya que todos son representados de manera estándar. Esto se consigue asignando a cada caracter un codigo único e irrepetible. De esta manera podemos por ejemplo tener un foro en el que se recojan comentarios en varios alfabetos diferentes y sean legibles por todos. También nos servirá para no tener que codificar los acentos y la ñ por sus entidades equivalentes en HTML como &xacute; o ñ sin que nos aparezcan símbolos raros en su lugar.

Para evitar errores de codificación es muy importante seguir todos estos pasos ya que si nos dejamos alguno podemos obtener resultados no deseados.

Si ya teníamos contenidos en la base de datos con otro charset como latin1 (iso-8859-1) debemos transformarlos a UTF-8. Por ejemplo se puede hacer exportando la base de datos completa y con un editor de texto cambiar la codificación a UTF-8 y volver a importar. Así podemos repasar por encima los fallos de conversión ya que algunos caracteres pueden verse extraños al convertir a UTF-8.



Apache: httpd.conf:
AddCharset UTF-8 .utf8
AddDefaultCharset UTF-8

PHP: php.ini
default_charset = "utf-8"

MySQL: my.cnf
character-set-server=utf8
default-collation=utf8_unicode_ci

phpmyadmin: config.inc.php
$cfg['DefaultLang'] = 'es-utf-8';
$cfg['Lang'] = 'es-utf-8';
$cfg['DefaultCharset'] = 'utf-8';

Paginas web:
En todas las páginas web especificar el charset en la cabecera.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Scripts de conexión a la DB:
Después de realizar la conexión, especificar el juego de caracteres
mysql_query("SET NAMES 'utf8'");

Sin categoría

Deja una respuesta