Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema codificación caracteres cargando fichero con file_get_contents

Estas en el tema de Problema codificación caracteres cargando fichero con file_get_contents en el foro de PHP en Foros del Web. Para mayor entendimiento pongo código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original header ( 'Content-Type: text/html; charset=UTF-8' ) ; $fichero = 'excelSeur.html' ; $cadena = file_get_contents ...
  #1 (permalink)  
Antiguo 06/05/2013, 09:56
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Problema codificación caracteres cargando fichero con file_get_contents

Para mayor entendimiento pongo código:
Código PHP:
Ver original
  1. header('Content-Type: text/html; charset=UTF-8');
  2. $fichero = 'excelSeur.html';
  3. $cadena = file_get_contents($fichero);
  4. /*
  5.  El fichero lo descargo en HTML desde cierta URL y es una tabla HTML con acentos. Si lo abro a mano se ven perfectamente los acentos, si lo abro con sublime text también y me indica que es 'plain text'
  6. */
  7. $cadena = utf8_encode($cadena);
  8. echo $cadena;

Así me salen mal los caracteres con acentos. El símbolo de euro sin embargo sale bien. Probé con mb, con iconv pero nada. También si compruebo el charset de la variable con mb o con cualquier otra función me devuelve que ya es utf8 (recién cargada). Como puedo hacer que salgan bien los acentos?
  #2 (permalink)  
Antiguo 06/05/2013, 10:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema codificación caracteres cargando fichero con file_get_contents

¿Ya la codificación del archivo es correcta?

Por que sería extraño que el símbolo de euro salga bien pero un acento no, siendo en el mismo archivo eso no debería ocurrir, amenos que la codificación misma del archivo esté arruinada.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/05/2013, 10:18
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Problema codificación caracteres cargando fichero con file_get_contents

Bueno me he fijado y el euro sale bien porque está puesto con su código HTML correspondiente: €

La verdad es que he probado ya infinidad de códigos que he visto por ahí, como este que no entiendo del todo lo que hace:

Código PHP:
Ver original
  1. $opts = array('http' => array('header' => 'Accept-Charset: UTF-8, *;q=0'));
  2. $context = stream_context_create($opts);
y pasarle el contexto a file_get_contents pero tampoco me funciona.

Los acentos salen tal que así: N�mero

SI abro el fichero con cualquier editor se ven perfectamente.
  #4 (permalink)  
Antiguo 06/05/2013, 10:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema codificación caracteres cargando fichero con file_get_contents

Debes asegurarte que todos tus archivos sean UTF-8 entonces, en dado caso, ¿por qué usas utf8_encode() si ya es UTF-8?

Me parece que te estás ahogando en un vaso de agua, hay muchos temas similares en el foro y las soluciones siempre son las mismas, es seguro que algo estás omitiendo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/05/2013, 10:25
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Problema codificación caracteres cargando fichero con file_get_contents

Es que es la primera vez que tengo tantos problemas con algo así.

Lo hacía por "probar suerte".

Si creo un fichero con este contenido: áéíóú
guardandolo de la misma forma me lo carga perfectamente. Pero los acentos de ese otro fichero no hay forma de que salgan bien.

Hay forma de comprobar si la codificación de un archivo es correcta?

Pues va a ser que es del fichero porque si copio el contenido y pego en uno nuevo y lo guardo ese si que me carga bien los datos. Me imagino que es problema de cómo me guarda los datos curl.

Entiendo que es por esta línea:
Código PHP:
Ver original
  1. file_put_contents("excelSeur.xls", $page);
Más o menos ya se por donde tirar al menos.

Es curioso pero puedo estar horas con mil problemas que no soluciono ni a tiros, que es entrar aquí, y como quiero explicar bien el problema, como que te enteras incluso tu mismo mejor y acabas arreglándolo tu la mayoría de las veces, al menos a mi me pasa. Llevaba más de una hora con esto ya.

EDIT:
efectivamente cambié el file_put_contents por
Código PHP:
Ver original
  1. file_put_contents("excelSeur.xls", utf8_encode($page));

y ya sale bien. Lo que no entiendo es por qué se abría el fichero manualmente se veía perfectamente.

Un saludo y gracias por la atención.

Última edición por alyciashape; 06/05/2013 a las 10:33

Etiquetas: caracteres, cargando, fichero, html, tabla
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 19:36.