Webeando (con perdón)

Categorías:

Archivos:

<Junio 2017
Lu Ma Mi Ju Vi Sa Do
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
             


Blogalia

WAMC Issue 1: Codificación de textos (hola, soy tu Unicode)

ColdFusion (MX y 7) trabaja por defecto en Unicode (UTF-8), mientras que uno suele estar más acostumbrado a Latin-1 (iso-8859-1) y tener muchos datos en ese formato. Tenemos pues dos opciones: o mantener las bases de datos en iso-8859-1 e incluir en el application.cfm algo tal que:

<cfcontent type="text/html; charset=ISO-8859-1">
<cfscript>setEncoding("FORM", "iso-8859-1");</cfscript>

, lo cual es rápido, sencillo, y encima funciona.

O [pausa dramática], también tenemos la opción, mucho más elegante, de trabajar directamente en UTF-8, que es hacia donde tiende toda la web y es lo más recomendable (¿Qué es Unicode y porqué tanta perreta en usarlo?). En este caso, por supuesto, la cosa se nos lía:

Para empezar, ha de usarse MySQL 4.1 o superior, que incluye soporte para UTF-8, además de un excelente asistente de configuración para Windowseros. En dicho asistente hay que indicarle que use UTF-8 como juego de caracteres por defecto.

Problemilla: la gestión de claves de MySQL 4.1 ha cambiado desde las versiones anteriores, lo que da lugar a una serie de interesantes sucedidos que trataremos en un próximo post.

Obviando momentaneamente dicho problemilla, y como para facilitarnos la vida usamos phpMyAdmin 2.6.1 para gestionar las bases de datos, debemos asegurarnos de que PHP cuenta con la extensión (mbstring) para que no se nos líe con juegos de caracteres multibyte, cual es el caso de UTF-8. (MySQL Control Center no acepta UTF-8 así que no es una opción en nuestro caso. Desconozco -de momento ;)- otros gestores). PHP 4.3.10, la versión que tenemos instalada, ya lo trae de paquete, y basta con descomentar la línea extension=php_mbstring.dll en php.ini y reiniciar PHP.

Por último, hay que indicarle a phpMyAdmin, si no lo ha deducido él solo, que use Spanish (es-utf-8) en Language. En el cotejamiento yo estoy usando utf8_general_ci y de momento va bien, así que siguiendo el viejo adagio de "si funciona, no lo toques", así lo he dejado. Y si dá problemas al ordenar textos con acentos y demás, pues nada, a jugar con el par de utf8_spanish que hay, a ver que pasa.... ;)

Instalados y configurados MySQL 4.1.*, PHP 4.3.10 y phpMyAdmin 2.6.1, ya podemos empezar a trabajar con UTF-8 en nuestra aplicación, y CF se queda tan a gustito sin tener que hacer conversiones innecesarias. Hemos hecho varias pruebas leyendo ficheros XML en iso-8859-1 y guardando los datos en MySQL con UTF-8, y va como la seda.

Mucho mucho ojo si ya tenemos contenidos en iso-8859-1 en nuestras bases de datos y hacemos que cambie a UTF-8. Aparte de que obviamente la codificación será incorrecta, el resultado en los formularios de phpMyAdmin al intentar editar los contenidos puede ser desastroso.

Más información sobre el fascinante mundo de los charsets y los collations en MySQL en este artículo de mysql.com y en este extracto de MySQL Language Reference publicado por Que (que oportuno que este sea justo el capítulo que ponen de ejemplo).


PD: por cierto, aunque en teoría se pueden usar caracteres Unicode en los nombres de bases de datos, tablas y/o campos, mejor evítese problemas y use sólo los ASCII de toda la vida (o sea: nada de tildes ni eñes en estos nombres).




Actualización (20/04/06): desde hace ya bastante tiempo, MySQL Control Center ha sido sustituido por MySQL Administrator y MySQL Query Browser, dos herramientas que no sólo aceptan UTF-8, sino que son comodísimas de usar. Desde que las tengo instaladas he renegado completamente de Access (y del PHPMyAdmin, todo hay que decirlo)....

2005-02-17 01:00 | Categoría: ColdFusion | 2 Comentarios | Enlace

Referencias (TrackBacks)

URL de trackback de esta historia http://webcraft.blogalia.com//trackbacks/26788

Comentarios

1
De: rvr Fecha: 2005-02-21 15:40

Hay dos cosas que mejorarían mucho PHP5. Uno es el soporte de Unicode y otro los espacios de nombres para variables y objetos.



2
De: Netito Fecha: 2005-02-22 16:03

Por lo que he leído, PHP 5.0.3 ya soporta Unicode, aunque es un mundo que desconozco y no puedo confirmarlo por experiencia... ;)



Nombre
Correo-e
URL
Dirección IP: 54.92.133.186 (fa78b080b4)
Comentario

© 2004 - 2005 Netito
Powered by Blogalia