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 &aacute; &ntilde; 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