Foros del Web » Programando para Internet » PHP »

Problemas al levantar datos con caracteres especiales (ej. Ñ)

Estas en el tema de Problemas al levantar datos con caracteres especiales (ej. Ñ) en el foro de PHP en Foros del Web. Tengo el siguiente script que me levanta datos de un archivo dbf a una tabla de mysql. Ahora el problema se me presenta porque me ...
  #1 (permalink)  
Antiguo 18/05/2007, 16:27
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Problemas al levantar datos con caracteres especiales (ej. Ñ)

Tengo el siguiente script que me levanta datos de un archivo dbf a una tabla de mysql. Ahora el problema se me presenta porque me cambia los caracteres especiales, como por ejemplo las ñ y los tildes.
Me han recomendado utilizar utf8_encode(); pero no estoy dando con el problema.

Dejo el script:

Código PHP:
<?php 
include ('config.php'); 
$link conectar_BD(); 
// abrir en modo solo lectura 
$db dbase_open('xxxx.DBF'0); 

if (
$db) { 
  
$numero_registros dbase_numrecords($db); 
  for (
$i 1$i <= $numero_registros$i++) { 
     
$row dbase_get_record_with_names($db$i); 
      
      
     
$codigoweb1 $row['CODIGOWEB1'];
     
$codigoweb2 $row['CODIGOWEB2'];
     
$codigo $row['CODIGO'];
     
$articulo $row['ARTICULO'];
      
           
        echo 
"Linea ($i):-->  " $row['CODIGO'] . "</br>"

$sql "INSERT INTO %s (codigoweb1, codigoweb2, codigo, articulo) VALUES('%s', '%s', '%s', '%s')";

$sql sprintf$sql$name_tb['productos'], addslashes($codigoweb1), addslashes($codigoweb2), addslashes($codigo), addslashes($articulo));

$result1=mysql_query($sql) or die("Query error:" mysql_error() . " Query: "  $sql );  


  } 

?>
Si alguien puede tirarme algo sera bienvenido, gracias y saludos
  #2 (permalink)  
Antiguo 18/05/2007, 16:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Que problema te da usar utf8_encode? es lo mas recomendable para que te respete los caracteres especiales.
  #3 (permalink)  
Antiguo 19/05/2007, 06:52
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

problemas no me da, lo que pasa que no se como aplicarlo para este script. GRacias y saludos
  #4 (permalink)  
Antiguo 19/05/2007, 07:41
Avatar de vb2005  
Fecha de Ingreso: noviembre-2005
Ubicación: Paderborn - Alemania
Mensajes: 566
Antigüedad: 18 años, 5 meses
Puntos: 24
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

arriba del todo pon este codigo:

Código PHP:
header('Content-Type: text/html; charset=iso-8859-1'); 
  #5 (permalink)  
Antiguo 21/05/2007, 09:08
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

bueno tu sabes que no pude con el tema de los caracteres especiales, coloque el header donde me dijiste pero nada, sigo con el problema, bueno espero y cualquier ayuda sera bienvenida, gracias y saludos
  #6 (permalink)  
Antiguo 21/05/2007, 09:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Pues solamente codifica tus variables:

Código PHP:
$unavar utf8_encode$unavar ); 
Aplicalo a todas tus variables que quieras pasar a UTF8.

Saludos.
  #7 (permalink)  
Antiguo 21/05/2007, 09:28
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Hice lo que me pasaste pero tu sabes que me da como resultado esto:

1 aâ¤o. soporte tâ‚cnico 1 a⤠(deberia ser 1 año. soporte técnico 1 año)

Antes de utilizar funcion utf8_encode, el texto me quedaba asi:

1 a¤o. soporte t‚cnico 1 a¤o. (deberia ser 1 año. soporte técnico 1 año)

Bueno continuo con el problema, gracias y saludos
  #8 (permalink)  
Antiguo 21/05/2007, 09:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Claro porque ya esta siendo codificado, ahora lo que necesitas hacer es cuando lo vayas a imprimir usas utf8_decode para decodificar.
  #9 (permalink)  
Antiguo 21/05/2007, 11:38
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Tu sabes que realizo el uso de utf8_decode y sigo teniendo el mismo problema, el tema es que ya en la tabla (mysql) cuando utilizo la lectura de dbf e inserto en la tabla, ya queda el dato mal escrito.

Coloco el codigo nuevamente:

Código PHP:
<?php 
include ('config.php'); 
$link conectar_BD(); 
// abrir en modo solo lectura 
$db dbase_open('ARTD.DBF'0); 

if (
$db) { 
  
$numero_registros dbase_numrecords($db); 
  for (
$i 1$i <= $numero_registros$i++) { 
     
$row dbase_get_record_with_names($db$i); 
      
      
     
$codigo $row['CODIGO'];
     
$detalle5 utf8_encode($row['DETALLE5']);
      
           
        echo 
"Linea ($i):-->  " $row['CODIGO'] . "</br>"

$sql "INSERT INTO %s (codigo, detalle5) VALUES ('%s', '%s')";

$sql sprintf$sql$name_tb['detalles'], addslashes($codigo), addslashes($detalle5));

$result1=mysql_query($sql) or die("Query error:" mysql_error() . " Query: "  $sql );  


  } 

?>
Ahora el utf8_decode donde lo utilizo exactamente porque a lo mejor lo estoy colocando mal, gracias nuevamente y saludos
  #10 (permalink)  
Antiguo 21/05/2007, 11:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

En la tabla es normal que veas mal el dato a menos que en la tabla le pongas que el encoding es UTF8.

El utf8_decode lo utilizas cuando vayas a imprimir tu resultado.
  #11 (permalink)  
Antiguo 21/05/2007, 12:00
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Me esta matando estos de los caracteres, jajajajaaja. Tu sabes que ahora al utilizar utf8_decode la informacion me queda asi:

1 a?. soporte t?nico 1 a? (1 año. soporte técnico 1 año deberia decir)
  #12 (permalink)  
Antiguo 21/05/2007, 12:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Mmm, no se si el problema este a la hora de extraer los datos de DBASE, ya probaste que los datos si los reciba en sus caracteres correctos ya en PHP? (antes de enviarlo a MySQL)
  #13 (permalink)  
Antiguo 21/05/2007, 12:50
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Código PHP:
 $detalle5 utf8_encode($row['DETALLE5']);
 
           
        echo 
"Linea ($i):-->  " $row['CODIGO'] . "&nbsp;".utf8_decode($detalle5)."</br>"
1 a¤o. Soporte T‚cnico 1 a¤o. asi se despliega, o sea que antes de pasar a mysql ya tengo el problema de los caracteres.
Los levanto de la misma manera que ya vimos anteriormente. Esta es la forma:

Código PHP:
$db dbase_open('ARTD.DBF'0); 

if (
$db) { 
  
$numero_registros dbase_numrecords($db); 
  for (
$i 1$i <= $numero_registros$i++) { 
     
$row dbase_get_record_with_names($db$i); 
Bueno seguimos en la lucha (me esta volviendo verde esto),gracias y saludos
  #14 (permalink)  
Antiguo 21/05/2007, 12:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Si pero si haces directamente:
Código PHP:
echo $row['DETALLE5']; 
  #15 (permalink)  
Antiguo 21/05/2007, 13:08
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

si me da el mismo problema: se ve asi 1 a¤o. Soporte T‚cnico 1 a¤o. Asi que el problema esta en la levantada directamente del DBf, ahora tenemos forma de solucionarlo?????. Gracias y saludos
  #16 (permalink)  
Antiguo 21/05/2007, 14:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Tienes forma de comprobar como esta almacenado en la tabla de dbase? para ver si esta bien almacenado el dato?
  #17 (permalink)  
Antiguo 21/05/2007, 14:26
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Si (trabajo clipper en DOS) lo veo barbaro. Es mas hice una prueba de levantarlo a windows (por ejemplo exportarlo a formato mdb-Access) y tambien se ven barbaros, el problema puede presentarse por las funciones de dbf de PHP; pero como no las uso generalmente las de PHP, no se si seran ellas en particular. Gracias y saludos
  #18 (permalink)  
Antiguo 21/05/2007, 14:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Prueba lo que dice vb2005:
Código PHP:
header('Content-Type: text/html; charset=iso-8859-1'); 
Hasta arriba del codigo y trata de darle echo nuevamente a ver si ves los cararacteres correctos.
  #19 (permalink)  
Antiguo 21/05/2007, 14:40
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Nada colocando header tampoco me lista los datos correctos,
los veo:

1 a¤o. Soporte T‚cnico 1 a¤o

Sigo con el mismo problema, gracias y saludos
  #20 (permalink)  
Antiguo 21/05/2007, 14:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

Lo que me deja a pensar es que la extension de dbase tenga problemas con caracteres latinos, lo que te recomiendo es que subas un bug a PHP.net explicando esto, o probando con una nueva version de PHP para checar si esta disponible una actualizacion.
  #21 (permalink)  
Antiguo 21/05/2007, 14:47
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problemas al levantar datos con caracteres especiales (ej. Ñ)

OK, voy a mandar a PHP.net y ver que me dicen. Gracias de todas formas por tu preocupacion, si sabes o ves algo avisame; de la misma manera si me pasan algo lo posteo por aqui, gracias nuevamente y saludos
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 05:43.