utf-8 o iso-8859-1
Lo mismo da que da lo mismo si aplicamos la misma filosofia en todo:
- – Servidor Web
- – Php
- – MySQL
- – Código fuente
- – ¡¡¡ FORMATO DE LOS ARCHIVOS DE CÓDIGO !!!
En especial se nos olvida la última.
1 – En el servidor Web existe el parámetro:
AddDefaultCharset ISO-8859-1
o bien
AddDefaultCharset UTF-8
Este último por defecto.
Si no tenemos control sobre el archivo de configuración del servidor Apache (httpd.conf) podemos generar uno a nivel local utilizando el archivo oculto .htaccess.
Lo más probable es que no exista, creamos uno vacío e incluimos una línea como esta:
AddDefaultCharset utf-8
o bien …
AddDefaultCharset ISO-8859-1
2 – En el interprete PHP
Existe una linea en el archivo php.ini que especifica el charset:
default_charset = "iso-8859-1"
o bien
default_charset = "utf-8"
No debe tener el punto y coma (comentario) delante.
3 – En el servidor de bases de datos MySQL
Tenemos configuración a nivel:
– maquina
– base de datos
– tabla
– campo
Donde podemos especificar el charset adecuado, utilizando los combos podemos seleccionar “latin1_spanish_ci” para el iso-8859-1, o bien “utf8_spanish_ci” para utf-8.
4 – En el código interpretado (PHP->HTML) debe constar la directiva como parte del <head>:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
o bien
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
5 – ¡¡¡ FORMATO DE LOS ARCHIVOS DE CÓDIGO !!!
El editor que utilicemos, en mi caso Geany, debe permitir especificar la codificación del archivo.
En el caso de Geany, desde el menu Documento / Elegir codificación, podemos elegir en las categorías “Europeo del oeste” e “Unicode” los dos charset de los que estamos hablando. Tras este cambio guardar el documento y todo funcionará al unísono.
Hacer esto así para unos cuantos archivos es sencillo, pero si tuviesemos que hacerlo para unos cientos, por la migración de un sitio web de un servidor de hosting (alojamiento) a otro la cosa cambia.
Existe un comando muy util para estos menesteres:
iconv -f iso-8859-1 -t utf-8 archivo.php -o archivo.php
El parametro -f es “from”, formato desde (origen)
El parametro -t es “to”, hacia (destino, siempre hablando de formatos)
El parametro -o es “out” (salida)
Puedes obtener la lista de codificaciones así:
iconv -l
Y tienes su documentación aqui -> http://es.php.net/iconv
Otros.
Existen funciones PHP muy utilies que sirven para lidiar situaciones en las que no tenemos control sobre el servidor web, o sobre el servidor de base de datos (a nivel de maquina) o del archivo de configuración de php.ini.
http://es2.php.net/manual/es/function.utf8-encode.php
http://es2.php.net/manual/es/function.utf8-decode.php
http://php.net/manual/es/function.addslashes.php
http://www.php.net/manual/es/function.htmlspecialchars.php