Foros del Web » Programando para Internet » PHP »

Error indefinido en texto

Estas en el tema de Error indefinido en texto en el foro de PHP en Foros del Web. El código lee un archivo XML y lo imprime en el documento HTML, pero cuando aparecen acentos lo muestra de la siguiente manera: "Apple podrÃ*a ...
  #1 (permalink)  
Antiguo 09/01/2006, 14:23
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
Error indefinido en texto

El código lee un archivo XML y lo imprime en el documento HTML, pero cuando aparecen acentos lo muestra de la siguiente manera: "Apple podrÃ*a desvelar nuevos portátiles en el Macworld" reemplazando los acentos por este caracter: "Ã". ¿que puedo hacer para solucionarlo?.
Gracias.
__________________
CSSBoulevar
Recursos para diseñadores y programadores webs
  #2 (permalink)  
Antiguo 09/01/2006, 14:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Pero que código usas para generar el HTML? ..

Que codificación usas en tu HTML? Me refiero a algo tipo:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
(o utf8)

Si hay algo de tu código XML que pasa por PHP para genear el HTML .. donde presentas tu contenido deberías tal vez usar:

utf8_encode()
www.php.net/utf8_encode

También es posible que tengas problemas con comillas (dobles o simples) en ese caso tendrías que usar a su vez: addslashes()

Un saludo,
  #3 (permalink)  
Antiguo 09/01/2006, 14:58
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
Hola Cluster.
La codificación que uso es la utf8 (la que tu indicas) y ya probé en colocar las instrucciones que me indicar, pero no hay caso...
Por ejemplo, hay un texto que se muestra de esta forma:
"Un inusual evento astronómico ha servido para probar que la luna de Plutón, Caronte, no tiene atmósfera"
Este error me pasa cuando muestro el xml de http://iblnews.com/rss4.php
¿que puede pasar?
__________________
CSSBoulevar
Recursos para diseñadores y programadores webs
  #4 (permalink)  
Antiguo 09/01/2006, 23:15
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 2 meses
Puntos: 5
Buenas.

A mí me pasó algo parecido hace un tiempo. El problema es que la codificación de las páginas HTML por lo general suele ser iso-8859-1, pero la códificación que manda el XML es utf-8. Podés cambiar la codificación de los headers HTTP, pero, en mi experiencia, te va a traer más problemas que soluciones.

Cita:
"Un inusual evento astronómico ha servido para probar que la luna de Plutón, Caronte, no tiene atmósfera"
Esto de arriba está codificado en utf-8. La solución más rápida que encontré en mi caso fue cambiar la codificación del XML por iso-8859-1 y listo. Claro que pude hacerlo porque YO estaba generando el XML (con php). Si el XML ya viene armado, entonces esa opción no es válida (pero podés tenerla en cuenta para simplificarte la vida en otros casos; la desventaja es que, según leí en todos lados, utf-8 es mejor porque es el standard para XML).

Otro tema es que, aparentemente, la mayoría de los navegadores decodifican el código como iso-8859-1, a menos que cambies manualmente la codificación (al menos, en mi experiencia, no soy experto en el tema). Lo cual tampoco es una opción, porque cada visitante tendría que modificar una configuración en su navegador.

Resumiendo, como te dijeron en otro mensaje, vas a tener que modificar la codificación, pero tenés que usar la función utf8_decode(), porque lo que querés es pasar de utf-8 (lo que te manda el XML) a iso-8859-1... que es justamente lo que hace utf8_decode. Ojo, en este caso necesitás decode, no encode.

Hacé la siguiente prueba. Tirá esto
Cita:
"Un inusual evento astronómico ha servido para probar que la luna de Plutón, Caronte, no tiene atmósfera"
a alguna variable, aplicale la función y hacé un echo.

Código PHP:
$textoXML "Un inusual evento astronómico ha servido para probar que la luna de Plutón, Caronte, no tiene atmósfera"
$test utf8_decode($textoXML);
echo 
$test
Suerte
Califa
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 15:28.