Foros del Web » Programando para Internet » PHP »

Leer fichero de texto con acentos (fscanf)

Estas en el tema de Leer fichero de texto con acentos (fscanf) en el foro de PHP en Foros del Web. Hola! Estoy leyendo un fichero de texto en el que tengo texto con acentos, utilizo la función fscanf i el código es este: <?php $datos ...
  #1 (permalink)  
Antiguo 27/02/2008, 09:49
nek
 
Fecha de Ingreso: noviembre-2007
Mensajes: 5
Antigüedad: 16 años, 5 meses
Puntos: 0
Leer fichero de texto con acentos (fscanf)

Hola!
Estoy leyendo un fichero de texto en el que tengo texto con acentos, utilizo la función fscanf i el código es este:

<?php
$datos = array();
$fitxer = fopen("prova.txt","r");
$i=1;
$datos = array();
while ($info = fscanf($fitxer, "%s\t%sr\n")) {
list ($nombre, $telf) = $info;
$datos[$i]["nombre"]= $nombre;
$datos[$i]["telf"]= $telf;
$i=$i+1;
}
fclose($fitxer);
print_r($datos);
?>
Cuando encuentra un acento me divide la palabra. En cuestión, no entiende bien los acentos.
Cómo puedo soluciona este problema?

Gracias x tu tiempo!
  #2 (permalink)  
Antiguo 27/02/2008, 10:46
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Leer fichero de texto con acentos (fscanf)

Holas nek

Creo que no entiendo tu pregunta, o sea, no dices qué quieres hacer con el contenido del archivo: ¿quieres que tome los acentos y los convierta a un tipo de formato? ¿quieres que los ignore? etc...

Por cierto, no conocía la función fscanf(), y ahora revisándola en la referencia de php, me entró la duda de qué significa la letra "r" sola en el formato de fscanf() de tu código.... ¿no será un "\r"?
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 27/02/2008, 10:59
nek
 
Fecha de Ingreso: noviembre-2007
Mensajes: 5
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Leer fichero de texto con acentos (fscanf)

Primero de todo tienes razón es \r.
Lo que estoy haciendo es introducir la información del fichero de texto en una array, para despues poder ordenar, sumar, etc.

Pues la función fscanf detecta los acentos como final de una cadena (eso me imagino) e introduce mal los elementos en el array... te pongo un ejemplo.

David 629985878
Núria 666545874

En el array queda de la siguiente manera:

$datos[1]["nombre"] = David
$datos[1]["telf"] = 629985878
$datos[2]["nombre"] = N
$datos[2]["telf"] = ria

Si le quito el acento lo hace perfecto.

Gracias!
  #4 (permalink)  
Antiguo 27/02/2008, 14:47
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Leer fichero de texto con acentos (fscanf)

Holas de nuevo :)

Pues parece que te toma la vocal acentuada como si fuera un tabulador ("\t").......
Es usual que los lenguajes nos pongan atado con los caracteres acentuados o la Ñ, porque no son ascii standar.

Se me ocurren ahora 2 posibilidades:
- Si vas a trabajar los datos para mostrarlos exclusivamente en una página HTML, podrías guardarlos ya codificados a HTML, por ejemplo: en vez de "Núria", guardas "N&uacute;ria".

Si ese no fuera el caso:
- No usar fscanf() y usar fgetcsv() que es una función que lee el contenido de un archivo CSV, que a fin de cuentas es un TXT con otro nombre no más, jejeje...
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:53.