Charset Apache+php+mysql
Rodrigo Ruiz
raruiz en alumnos.duoc.cl
Mie Ago 23 12:56:36 CLT 2006
El mar, 22-08-2006 a las 17:00 -0400, Rodrigo Fuentealba escribió:
>
>
> 2006/8/22, Rodrigo Ruiz <raruiz en alumnos.duoc.cl>:
> Srs,
> muy buenas tardes, mi inquietud es la siguiente:
> tengo instalado apache+php+mysql tal como indica el asunto, y
> cuando
> envío algún dato por un formulario y que contenga algún
> caracter con
> acento o alguna eñe, al momento de presentarlo por apache, me
> lo muestra
> con chirimbolos.
> He intentado distintas configuraciones en apache,php y mysql,
> dejando
> todo en utf-8 o todo en iso-8859-1 (latin1), sin embargo,
> sigue sin
> mostrarme bien los datos.
> Como dato, el html está sin los á ñ y otros, y
> cuando
> apache está configurado para presentar los datos con
> AddDefaultCharset
> en iso-8859-1, estos se ven bien, sin embargo los datos que
> extrae de
> mysql para presentarlos en la misma página se ven con
> chirimbolos,
> cambio la conf de apache a utf-8, y pasa lo contrario, el
> texto html con
> acentos se ve mal pero si se visualiza de forma correcta lo
> que trae
> desde mysql.
> Alguien podría darme alguna pista de como dejar todo
> estandarizado para
> que todos los caracteres se vean con sus respectivos acentos y
> eñes, ya
> sea extraídos desde la bd o bien porque están directamente
> tipeados así
> en el html.
> Muchas gracias.
>
> <meta http-equiv="content-type" content="text/html; charset=utf8" />
>
> ¿eso lo has probado en tu web? entre <head> y </head>
Claro, siempre está en todas las cabeceras de mis páginas.
>
>
> ¿has usado htmlentities() desde el recordset antes de imprimir en la
> página?
>
La verdad, que eso no era solución, pues los datos ingresados a la base
de datos también son utilizados por otras aplicaciones no web.
Bueno, pero finalmente he logrado dejar todo en utf-8, y ahora si
funciona todo correctamente. Para ello deje php por defecto en utf-8 en
default_charset = 'utf-8', apache AddDefaultCharset UTF-8 y mysql.
Debió funcionar hace bastante tiempo, pues esa conf ya la tenía por
defecto, sin embargo no lo hacía bien, y en otros sistemas si
funcionaba, cuando mi 'toco' me indicó los de los meta tags, los revisé
por si acaso, aunque estaba seguro de que estaban en utf-8, era así pero
las páginas aún así se mostraban como iso-8859-1.
Aquí viene la parte vergonzosa, me puse a mirar detalladamente la
cabecera de mis páginas, y no había reparado en una maldita línea que
modificaba las cabeceras al principio, que decía así:
header("Content-type: text/html; charset=iso-8859-1");
Bueno, ahora se entiende por qué apache seguía mostrando la página en
dicha codificación, la verdad no estoy seguro de como llegó esa línea
ahí, y si la puse yo no me acordaba.
Todo OK ahora, y gracias.
> --
> Rodrigo Ruiz <raruiz en alumnos.duoc.cl>
> Duoc UC
>
>
> Atte.
>
> --
> Rodrigo Fuentealba Cartes
> Registered User 387639 - http://counter.li.org
--
Rodrigo Ruiz <raruiz en alumnos.duoc.cl>
Duoc UC
Más información sobre la lista de distribución PHP