Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Carga masiva no reconoce caracteres especiales

Estas en el tema de Carga masiva no reconoce caracteres especiales en el foro de PHP en Foros del Web. Cuando inserto caracteres especiales de esta manera sí graba en mi tabla de trabajo: Código PHP: <?php class  ConexionDB  extends  PDO  {   public function  __construct  () { ...
  #1 (permalink)  
Antiguo 13/05/2016, 16:21
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Pregunta Carga masiva no reconoce caracteres especiales

Cuando inserto caracteres especiales de esta manera sí graba en mi tabla de trabajo:
Código PHP:
<?php
class ConexionDB extends PDO {
  public function 
__construct () {
  try {
  
parent:: __construct('mysql:host=localhost;dbname=xprueba;charset=utf8''root','clave');
  
parent:: setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
  } catch (
Exception $ex) { die ('Database is not exist');  }  }
  function 
__destruct(){
  }
}

  
$BD = new ConexionDB();
  
$sth $BD->prepare("INSERT INTO xxx (codigo, stud) VALUES (:codigo, :nombre)"); 
//------- CON BINDPARAM
  
$codigo "666555";
  
$nombre   "mac'p¥Aato";

  
$sth->bindParam(':codigo'$codigo);
  
$sth->bindParam(':nombre'$nombre);
  
$sth->execute();
//------- CON ARRAY
  
$codigo "777888";
  
$nombre "Array ñÑáéíóú";

  
$sth->execute(array(':codigo'=>$codigo':nombre'=>$nombre))
?>
Pero si leo de un archivo csv no los reconoce.
Código PHP:
<?php

class ConexionDB extends PDO {
  public function 
__construct () {
  try {
  
parent:: __construct('mysql:host=localhost;dbname=xprueba;charset=utf8''root','clave');
  
parent:: setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
  } catch (
Exception $ex) {  die ('Database is not exist');   }  }
  function 
__destruct(){
  }
}
  
$BD = new ConexionDB();
    if(
file_exists('prueba_caracteres.csv')) {
        
$registro fopen('prueba_caracteres.csv'"r");
        
$BD = new ConexionDB();
        while ((
$data fgetcsv($registro200",")) !== FALSE) {
            
$sth $BD->prepare("INSERT INTO xxx (codigo, nombre) VALUES (:codigo, :nombre)");
            
$codigo $data[0];
            
$nombre   $data[1];

                        
$sth->bindParam(':codigo'$codigo);
                        
$sth->bindParam(':nombre'$nombre);
                        
$sth->execute();
        }
    }
?>
Mi archivo csv tiene lo siguiente:
Código HTML:
666555,mac'p¥Aato
777888,Array ñÑáéíóú
Pero se trunca no reconoce las ñ's ni las tildes que es lo más importante.
Alguna idea de cuál puede ser el problema? o qué estoy obviando?
__________________
Todos somos iguales. NO! a la violencia de género.
  #2 (permalink)  
Antiguo 13/05/2016, 16:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Carga masiva no reconoce caracteres especiales

¿Y cuál es el charset del archivo CSV?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/05/2016, 17:42
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Respuesta: Carga masiva no reconoce caracteres especiales

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Y cuál es el charset del archivo CSV?
Revisé el origen del archivo csv y era unicode generado en excel 2010.
Pero al cambiarlo a UTF-8 igual se perdían los caracteres especiales.

Así que el archivo lo re-grabé desde el notepad y dándole UTF-8 ya no se pierden las letras eñes ni las tildes que eran los más importantes.

Supongo que el excel 2010 falta configurar en algún lugar. Cierto?
__________________
Todos somos iguales. NO! a la violencia de género.
  #4 (permalink)  
Antiguo 13/05/2016, 17:47
Avatar de Alejandra_Sand  
Fecha de Ingreso: marzo-2016
Mensajes: 22
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: Carga masiva no reconoce caracteres especiales

Yo tuve ese mismo problema, cuando guardes en excel Guardar Como -> Opciones Web -> Codificación
  #5 (permalink)  
Antiguo 17/05/2016, 11:07
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Respuesta: Carga masiva no reconoce caracteres especiales

Cita:
Iniciado por Alejandra_Sand Ver Mensaje
Yo tuve ese mismo problema, cuando guardes en excel Guardar Como -> Opciones Web -> Codificación
Sí entré a la opción y lo cambié por UTF-8, pero igual no acepta.
Solo acepta y el mismo csv lo abro y cambio en notepad.
Supongo que me resignaré a trabajarlo así.
__________________
Todos somos iguales. NO! a la violencia de género.

Etiquetas: caracteres, especiales, masiva, reconoce, registro, sql, 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 13:51.