[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Problemas con mysql



El sáb, 27-01-2007 a las 22:19 +0100, Iñaki escribió:
> El Viernes, 28 de Julio de 2006, Lord Tyranus escribió:
> > Hola amigos listeros, tengo el siguiente problema he desarrollado una
> > pequeña aplicacion en php que saca datos de mysql , desde mi debian
> > sarge no me da problemas , cuando la ejecuto en el ubutu me dan unos
> > caracteres me dio extraños en la tilde del acento, me supongo que ha
> > de ser algo de configuracion de las locales de mysql, no se si alguien
> > le ha pasado lo mismo.
> 
> Haz una prueba en esa Ubuntu:
> 
> Conectate vía "mysql" (por consola quiero decir) y haz un select para que 
> salga algún valor de los que se ven mal en la aplicación web.
> 
> - Si en consola lo ves bien entonces en problema del tema web (apache, 
> codificación de la página, codificación indicada en la cabecera de la página, 
> configuración del navegador respecto de la codificación...).
> 
> - En el caso de que también lo veas mal en consola prueba a añadir lo 
> siguiente en "/etc/mysql/my.conf":
> 
>   [mysqld]
>   ...
>   init-connect='SET NAMES utf8'
>   character-set-server=utf8
>   collation-server=utf8_general_ci
>   default-character-set=utf8
>   default-collation=utf8_general_ci
> 
> Y reinicia mysql. Prueba luego otra vez desde consola.
> 

El grupo de trabajo en el que estoy metido usamos LAMP pero usando un
framework llamado CakePHP y hemos tenido problemas con el encoding,,
bueno mas bien el programador no entendía bien como intervienen los
distintos elementos del LAMP en el encoding.

Hay varias cosas a  tener en cuenta:

1.El codigo fuente tanto html como php debe de ser guardado en utf8 con
el editor de texto. Muchas veces si php genera un trozo de codigo en
utf8 pero el resto esta en latin1 seguira mostrandose en latin1(segun la
suerte del navegador web).
2.La pagina html debe de tener claramente el meta indicando que es utf8.
3.Tu base de datos debe de tener el diseño de la tabla en utf8, vamos
todos los campos texto en utf8, y si tenias registros guardados de antes
debes de asegurarte que los modificas en una sesion utf8(por ejemplo con
el phpmyadmin).
4.Desde php(en mi caso desde framework cakephp) debes de abrir una
sesion con mysql en utf8 y lanzar tus sentencias sql.

Error de nuestro programador en todo esto, piensa que Apache modifica la
pagina a servir al navegador... El meta incluido en el codigo html es el
que indicar al navegador web con que encoding debe de interpretar la
pagina... y si no lo lleva y el apache lo especifica con las directivas
entonces es el apache quien manda.... pero siempre tiene prioridad el
meta del html... Por defecto apache viene en latin1.

Espero haberme explicado.. suerte.



Reply to: