Foros del Web » Programando para Internet » PHP »

Comportamiento extraño de acentos con PHP

Estas en el tema de Comportamiento extraño de acentos con PHP en el foro de PHP en Foros del Web. Buenas. He tenido uno de los problemas más extraños en lo que llevo desarrollando PHP. No tengo ni la más remota idea de qué ha ...
  #1 (permalink)  
Antiguo 11/12/2011, 16:58
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 14 años, 6 meses
Puntos: 14
Comportamiento extraño de acentos con PHP

Buenas.

He tenido uno de los problemas más extraños en lo que llevo desarrollando PHP. No tengo ni la más remota idea de qué ha sucedido.

Vamos por partes. Voy a simplificar nombres para entendernos.

Tengo una página index.php, que contiene dos includes.
Estos includes son
"inicio.php"
"buscador.php"

En inicio.php hay un div que dice "Blablabla ecónomico y rápido blabla".
En buscador.php tengo una frase que dice "Búsqueda avanzada".

En el index.php, tengo;
Código:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Ahora, datos.

Al abrir index.php, la frase de inicio.php aparece correctamente.
En cambio, buscador.php aparece mal "carácteres raros áéÃ*óúñÃ".

Decido investigar, y pruebo varias cosas. Echos en una y otra,y lo mismo: contenido de inicio.php aparece correctamente. buscador.php no.

No entiendo nada, sigamos investigando.
Cambio el nombre a inicio.php a inicasdfas.php. Sigue mostrandose correctamente.
Pongo un include a inicasdfas.php "buscador.php". Contenido de buscador no aparece correctamente pero el resto sí.

OK, llegados a este punto rozo la histeria y la locura así que BORRO inicasdfas.php.
Creo otro archivo, y lo llamo inicio.php. Pongo el mismo contenido.

Abro.

No aparece correctamente.

Llegado a este punto decido compartir esto con vosotros a la espera de que alguien me explique qué demonios ha pasado.

Gracias.
Juro que no he bebido nada.
  #2 (permalink)  
Antiguo 11/12/2011, 17:38
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.339
Antigüedad: 12 años, 9 meses
Puntos: 177
Respuesta: Comportamiento extraño de acentos con PHP

podrías poner el contenido de los archivos "inicio.php" y "buscador.php" ?


probá con esta linea:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
__________________
la la la
  #3 (permalink)  
Antiguo 11/12/2011, 20:24
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 14 años, 6 meses
Puntos: 14
Respuesta: Comportamiento extraño de acentos con PHP

Código:
áéíóú ñÑÑÑ
Ese era el código en las dos.

Lo del UTF8 lo tenía en el index.php. No lo ponía en los dos ficheros de prueba porque, supuesta y racionalmente, si ninguno de los dos lo tenía tenía que dar la misma respuesta: no funcionar. Pero en inicio.php funcionaba.

He vuelto a hacer algún avance en este misterio.

Curiosamente tras borrar el fichero, y crearlo de nuevo, el comportamiento es el que debería.

Si a alguien alguna vez le pasa algo parecido a esto, que sepa que la solución que he encontrado, pese a ser de bomberos, me ha funcionado:

Tenía ahora el fichero resultados.php. Con todo el código normal al poner acentos aparecía �.
He copiado en un bloc de notas todo el contenido, he borrado el fichero, he abierto uno nuevo y copiado los datos del bloc de notas y... ahora funciona.

No tengo intención de buscarle explicación ya.
  #4 (permalink)  
Antiguo 11/12/2011, 20:28
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.339
Antigüedad: 12 años, 9 meses
Puntos: 177
Respuesta: Comportamiento extraño de acentos con PHP

ok, lo que te pasó es que seguramente eso lo copiaste de algún lado y se copiaron también codigos ocultos, y al pegarlos en bloc de notas desaparecen, pasa muy seguido eso
__________________
la la la
  #5 (permalink)  
Antiguo 11/12/2011, 20:31
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 14 años, 6 meses
Puntos: 14
Respuesta: Comportamiento extraño de acentos con PHP

¿Códigos ocultos?
¿Es posible que incluso el DreamWeaver no pueda leer esos códigos ocultos?

Acabas de dejarme K.O.
  #6 (permalink)  
Antiguo 11/12/2011, 21:40
Avatar de ElSiniestro  
Fecha de Ingreso: diciembre-2011
Ubicación: Ibagué
Mensajes: 115
Antigüedad: 10 años, 11 meses
Puntos: 23
Respuesta: Comportamiento extraño de acentos con PHP

Hola Urdaris_Nox:

Esta respuesta te sirve:

http://www.forosdelweb.com/f18/salen-rombos-triangulos-mi-codigo-fuente-961561/#post4062500

Ahí está algo que tiene que ver con codificación

Cuéntanos a ver que tal te fue
  #7 (permalink)  
Antiguo 12/12/2011, 00:54
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 18 años, 7 meses
Puntos: 406
Respuesta: Comportamiento extraño de acentos con PHP

Para nada tiene que ver con códigos ocultos, todo ese error es sobre codificación...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 12/12/2011, 10:41
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 14 años, 6 meses
Puntos: 14
Respuesta: Comportamiento extraño de acentos con PHP

Estoy al tanto de los asuntos del UTF8, y más o menos me aclaro con eso.

No es el problema.

Si fuera el problema, funcionaría o no funcionaría en los dos archivos. Pero estoy diciendo que con el mismo código y abriendolo desde el mismo lugar y bajo mismas condiciones uno funciona y el otro no.

Es un asunto en cuanto de codificación en cuanto que aparece mal, pero el porqué un archivo usa una codificación y el otro otra, es algo que se me escapa. Código oculto podría explicarlo.

He solucionado el problema copiado el código, eliminando archivo y volviendolo a generar. Qué clase de problema de codificación se resolvería así?

(Siento las formas, estoy quemado con este problema ya...)
  #9 (permalink)  
Antiguo 12/12/2011, 11:40
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 17 años
Puntos: 890
Respuesta: Comportamiento extraño de acentos con PHP

El charset te lo dijeron ya:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Ahora todos los archivos también debes guardarlos como UTF-8 de preferencia sin BOM supongo que DW debe tener la capacidad de hacerlo. Y si no es esto, creo que debes acudir a un buen chaman...
__________________
Drupal Argentina
  #10 (permalink)  
Antiguo 12/12/2011, 12:52
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 14 años, 6 meses
Puntos: 14
Respuesta: Comportamiento extraño de acentos con PHP

Tengo puesto el charset UTF8.

Eso de BOM no lo había oído hasta ahora, voy a ver si consigo algo con ello. Porque me tiene por el camino de la amargura, de verdad... xD
  #11 (permalink)  
Antiguo 12/12/2011, 13:05
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 18 años, 7 meses
Puntos: 406
Respuesta: Comportamiento extraño de acentos con PHP

Por supuesto que es problema de codificación y te repito, no es de código oculto, cuando haces copy/paste desde fuentes con codificación diferente por ejemplo páginas web por lo regular se copia con la codificación original (el de la página), y al guardarlo ocurre errores, por lo cual al intentarlo visualizar bajo otro tipo de codificación muestra error, aun cuando el archivo este bien codificado y otros caracteres se muestren correctamente
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #12 (permalink)  
Antiguo 12/12/2011, 13:28
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 14 años, 6 meses
Puntos: 14
Respuesta: Comportamiento extraño de acentos con PHP

Nemutagk, en tal caso, ¿cómo podría corregir el error?

Veamos, tengo puesto el header "UTF8", y al escribir los acentos no aparecen correctamente.

He descubierto esta web http://people.w3.org/rishida/utils/bomtester/ donde he comprobado
que no tenía BOM. Y mi Dreamweaver está preparado para no incluirlo.

¿Es posible que tenga algo que ver con la config.php de mi servidor?

Gracias...
  #13 (permalink)  
Antiguo 12/12/2011, 13:32
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 18 años, 7 meses
Puntos: 406
Respuesta: Comportamiento extraño de acentos con PHP

hay dos cosas, una es que se muestre mal algo que copias y pegas en el archivo y otra muy diferente a que se muestre mal letras acentuadas escritas directamente en el editor, si lo segundo no se muestra correctamente no le busques mas tienes problemas de codificación, el hecho que guardes los archivos como utf8 no es el final, tanto el meta-tag html debe estar en utf8 y si usas base de datos esta tiene que tener sus tablas en utf8, normalmente cuando tengo este tipo de problemas directamente elimino el archivo y paso todo a un archivo nuevo en el que me aseguro que esta como utf8 sin bom
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #14 (permalink)  
Antiguo 12/12/2011, 14:52
Avatar de ElSiniestro  
Fecha de Ingreso: diciembre-2011
Ubicación: Ibagué
Mensajes: 115
Antigüedad: 10 años, 11 meses
Puntos: 23
Respuesta: Comportamiento extraño de acentos con PHP

¿Cómo estás guardando los datos en MySQL? si esa traves de la consola de windows, el problema es que el lo guarda en codificación Windows (variación de latin1).

Modifica el contenido de la base de datos con SQLBuddy (más rápido y liviano y menos complejo que PHPMyAdmin), cambiando los caracteres extraños por los que necesitas.

Por último abre todos tus script con notepad++ y los guardas con codificación utf-8 y prueba de nuevo a ver que tal

(¿Es posible que subas el código del script que te genera el problema?)
  #15 (permalink)  
Antiguo 12/12/2011, 14:53
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.339
Antigüedad: 12 años, 9 meses
Puntos: 177
Respuesta: Comportamiento extraño de acentos con PHP

copié y pegué tu código en dreanweaber en la parte de diseño, fui al código y salió esto

<pre dir="ltr">áéíóú ñÑÑÑ</pre>

tiene códigos ocultos, las etiquetas PRE, no se si será del propio foro o será el problema
__________________
la la la
  #16 (permalink)  
Antiguo 12/12/2011, 14:58
Avatar de ElSiniestro  
Fecha de Ingreso: diciembre-2011
Ubicación: Ibagué
Mensajes: 115
Antigüedad: 10 años, 11 meses
Puntos: 23
Respuesta: Comportamiento extraño de acentos con PHP

Indícale a MySQL que cambie el charset de cada base de datos y de cada tabla que la componen es utf-8

Creo que el problema de las etiquetas <pre></pre> escriben todo cual se le indica
  #17 (permalink)  
Antiguo 12/12/2011, 17:08
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 14 años, 6 meses
Puntos: 14
Respuesta: Comportamiento extraño de acentos con PHP

El código lo escribí aquí a mano puesto que era tan corto que no me hacía falta ni copiarlo ;)

¿Qué herramientas puedo usar para saber si mis páginas tienen código oculto?

No sé exactamente a qué te refieres, ElSiniestro, con "cómo guardo los datos de MySQL". Utilizo Xampp y por tanto Apache, MySQL y phpMyAdmin como gestor del MySQL.
Tengo los campos de la base de datos en latin1bin, pero aparentemente los datos se guardan bien, ¿aconsejaríais cambiarlos a UTF8?

De todas formas la base de datos no afecta a las páginas de prueba que estoy haciendo, en las que pongo letras directamente y directamente salen mal.

Voy a investigar un poquito más, intentando aclarar dudas, y si sigo con esto, subo scripts y todo. En caso de que lo solucione explicaré donde estaba liado esto.

Gracias por vuestra ayuda, Sres.
  #18 (permalink)  
Antiguo 12/12/2011, 19:42
Avatar de ElSiniestro  
Fecha de Ingreso: diciembre-2011
Ubicación: Ibagué
Mensajes: 115
Antigüedad: 10 años, 11 meses
Puntos: 23
Respuesta: Comportamiento extraño de acentos con PHP

Hola
No es necesario que cambies toda la codificación a utf-8, sino que manejes una sola codificación para todo (MySQL, PHP, Apache, HTML(EDITOR), Navegador), sólo que utf-8 es el mejor porque permite codificar (casi) todos los símbolos que hay, además de ser estándar universal.

Mira este tema:

http://www.forosdelweb.com/f18/salen-rombos-triangulos-mi-codigo-fuente-961561/

Y hazme caso, abre todos los archivos y los guardas con la misma codificación (utf-8 o 8859-1(el mismo latin1)) además de asegurarte que sea la misma codificación que manejan el MySQL, PHP, Apache, HTML(EDITOR), Navegador

En el documento ten en cuenta poner

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Según sea el caso

(no hay códigos ocultos, el problema es el framework del foro)
  #19 (permalink)  
Antiguo 25/12/2011, 19:07
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 14 años, 6 meses
Puntos: 14
Respuesta: Comportamiento extraño de acentos con PHP

Bueno, después de mucho batallar, descubrí muchas cosas y aprendí otras tantas. Pero no lo hubiera solucionado sin esto:

http://v3.juque.cl/weblog//2006/04/0...-parte-ii.html

Que los 86 Dioses le compensen y le den muchos turrones.
  #20 (permalink)  
Antiguo 26/12/2011, 05:46
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 17 años
Puntos: 890
Respuesta: Comportamiento extraño de acentos con PHP

Cita:
Iniciado por Urdaris_Nox Ver Mensaje
Bueno, después de mucho batallar, descubrí muchas cosas y aprendí otras tantas. Pero no lo hubiera solucionado sin esto:

http://v3.juque.cl/weblog//2006/04/0...-parte-ii.html

Que los 86 Dioses le compensen y le den muchos turrones.
¿Y exactamente que es lo que ocurría?
__________________
Drupal Argentina
  #21 (permalink)  
Antiguo 26/12/2011, 17:49
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 14 años, 6 meses
Puntos: 14
Respuesta: Comportamiento extraño de acentos con PHP

Ocurrían varias cosas.

El problema que me llevó a crear este post tiene que ver con la codificación de las páginas. Esto no tiene nada que ver con los META, sino con el Encoding.

Dreamweaver y todos los editores abren las páginas con el encoding que tiene (a menos que no lo puedan leer), y lo muestran tal cual. No obstante el navegador lo leería con su encoding. Por esta razón, páginas ya creadas de mi web se abrían con Dreamweaver con encoding diferente a las que yo creaba nuevas, y el mismo código se veía igual pero estaba con diferente encoding.

Esto explica porqué una página ya creada tenía acentos incorrectamente mostrados, mientras que el mismo código en la página nueva los mostraba bien. También explica porqué al copiar el código de la vieja a la nueva página, se mostraba correcto.

Una vez solucioné esto, en el servidor local se veía bien los acentos pero luego en el servidor externo se volvían a ver mal, con el mismo código. Rayos y huracanes después, descubrí que era porque el archivo httpd.conf de mi servidor apache local y el del servidor externo tenían un "AddDefaultCharset" diferente.

No obstante no tenía acceso al httpd.conf de mi servidor externo así que tuve que hacer uso de un archivo ".htaccess" que puse en la raíz de mi sitio web con el charset en "UTF-8".


Me he pasado quizás con la explicación pero tengo fe en que sirva de algo a alguien, igual que yo estoy agradecido al Sr. Juque por el enlace que he copiado. Sin él todavía estaría dándome cabezazos.
Un saludo!
  #22 (permalink)  
Antiguo 27/12/2011, 08:24
zx9
 
Fecha de Ingreso: noviembre-2006
Mensajes: 29
Antigüedad: 16 años
Puntos: 2
De acuerdo Respuesta: Comportamiento extraño de acentos con PHP

Cita:
Iniciado por Urdaris_Nox Ver Mensaje
Ocurrían varias cosas.

El problema que me llevó a crear este post tiene que ver con la codificación de las páginas. Esto no tiene nada que ver con los META, sino con el Encoding.

Dreamweaver y todos los editores abren las páginas con el encoding que tiene (a menos que no lo puedan leer), y lo muestran tal cual. No obstante el navegador lo leería con su encoding. Por esta razón, páginas ya creadas de mi web se abrían con Dreamweaver con encoding diferente a las que yo creaba nuevas, y el mismo código se veía igual pero estaba con diferente encoding.

Esto explica porqué una página ya creada tenía acentos incorrectamente mostrados, mientras que el mismo código en la página nueva los mostraba bien. También explica porqué al copiar el código de la vieja a la nueva página, se mostraba correcto.

Una vez solucioné esto, en el servidor local se veía bien los acentos pero luego en el servidor externo se volvían a ver mal, con el mismo código. Rayos y huracanes después, descubrí que era porque el archivo httpd.conf de mi servidor apache local y el del servidor externo tenían un "AddDefaultCharset" diferente.

No obstante no tenía acceso al httpd.conf de mi servidor externo así que tuve que hacer uso de un archivo ".htaccess" que puse en la raíz de mi sitio web con el charset en "UTF-8".


Me he pasado quizás con la explicación pero tengo fe en que sirva de algo a alguien, igual que yo estoy agradecido al Sr. Juque por el enlace que he copiado. Sin él todavía estaría dándome cabezazos.
Un saludo!
Gracias por esta explicación, a mi me sirvió.

Etiquetas: acentos, comportamiento, extraño, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:25.