Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Simbolos en tabla mysql

Estas en el tema de Simbolos en tabla mysql en el foro de PHP en Foros del Web. Buenas, tengo una consulta sobre algunos caracteres que me aparecen al importar un archivo a una tabla. Les explico en detalle. tengo varios archivos excel ...
  #1 (permalink)  
Antiguo 03/11/2015, 07:57
 
Fecha de Ingreso: noviembre-2015
Mensajes: 7
Antigüedad: 8 años, 5 meses
Puntos: 0
Simbolos en tabla mysql

Buenas, tengo una consulta sobre algunos caracteres que me aparecen al importar un archivo a una tabla.
Les explico en detalle. tengo varios archivos excel que quiero importar a diferentes tablas, el problema es que al hacerlo me aparecen signos de interrogación "?" en los espacios entre una palabra y otra del contenido de la tabla.

Ej: ANTIPARRA?VIRTUE?AMARILLO. En lugar de esos signos en el excel hay un espaciado. Lo raro es que en la misma tabla con algunas lineas lo hace y con otras no. Si en el excel (esta guardado como csv y como txt y pasa lo mismo) borro el espacio entre las palabras y lo vuelvo a generar los signos ya no aparecen al volver a importar, pero entenderán que al ser mucho archivos con muchas filas es mucho trabajo hacerlo.

En otros casos me aparece asi:
BAUL�TRASERO NITRO�MEDIANO C/REFLECTIVOS 44x38x27cm
Verán que no lo hace con todos los espacios entre palabras, y en la misma tabla con el mismo archivo importado me aparece otra linea sin problemas
BAUL TRASERO NITRO MEDIANO C/ REFLECTIVOS 30x39x40 cm

Tienen alguna sugerencia?
Desde ya muchas gracias!!
  #2 (permalink)  
Antiguo 03/11/2015, 09:05
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 5 meses
Puntos: 7
Respuesta: Simbolos en tabla mysql

Debe ser por el juego de caracteres de codificación de la base de datos. Trata de investigar por ahí.

¡Saludos!
  #3 (permalink)  
Antiguo 03/11/2015, 09:50
 
Fecha de Ingreso: noviembre-2015
Mensajes: 7
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Simbolos en tabla mysql

Cita:
Iniciado por gonzaherrera77 Ver Mensaje
Debe ser por el juego de caracteres de codificación de la base de datos. Trata de investigar por ahí.

¡Saludos!
Estuve viendo por ese lado pero no pude solucionar mucho. Tengo todo codificado en UTF-8. Lo que me hace descartar el tema de la codificacion es que no pasa con todas las lineas del excel, solo con algunas.
  #4 (permalink)  
Antiguo 03/11/2015, 10:23
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 5 meses
Puntos: 7
Respuesta: Simbolos en tabla mysql

Podrias adjuntar el archivo CSV si es que no tienes información sensible para hacer algunas pruebas.

¡Saludos!
  #5 (permalink)  
Antiguo 03/11/2015, 11:14
 
Fecha de Ingreso: noviembre-2015
Mensajes: 7
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Simbolos en tabla mysql

Cita:
Iniciado por gonzaherrera77 Ver Mensaje
Podrias adjuntar el archivo CSV si es que no tienes información sensible para hacer algunas pruebas.

¡Saludos!
Disculpa, pero soy nuevo en el foro y no encuentro desde donde adjuntarlo.
  #6 (permalink)  
Antiguo 03/11/2015, 11:49
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 5 meses
Puntos: 7
Respuesta: Simbolos en tabla mysql

Se ve que no dejan subir archivos adjuntos, yo tambien soy nuevito jaja. Subilo a un servidor en la nube como por ejemplo https://www.sendspace.com/ o mediafire, ect despues pegas el link para descargar.

¡Saludos!
  #7 (permalink)  
Antiguo 03/11/2015, 11:59
 
Fecha de Ingreso: noviembre-2015
Mensajes: 7
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Simbolos en tabla mysql

Cita:
Iniciado por gonzaherrera77 Ver Mensaje
Se ve que no dejan subir archivos adjuntos, yo tambien soy nuevito jaja. Subilo a un servidor en la nube como por ejemplo https://www.sendspace.com/ o mediafire, ect despues pegas el link para descargar.

¡Saludos!
A ver ahora...
http://www.mediafire.com/view/cx6vm10u6a5mdii/antiparras.csv
  #8 (permalink)  
Antiguo 03/11/2015, 12:42
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 5 meses
Puntos: 7
Respuesta: Simbolos en tabla mysql

Hola pablomartinez_22 estube haciendo las pruebas y me levanta todo bien




Si tu base de datos esta con los juegos de caracteres UTF8, al archivo antiparras.csv convertilo a UTF8 con un editor de texto como Notepad++ y probalo. Pero me parece raro.


¡Saludos!
  #9 (permalink)  
Antiguo 03/11/2015, 12:58
 
Fecha de Ingreso: noviembre-2015
Mensajes: 7
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Simbolos en tabla mysql

Cita:
Iniciado por gonzaherrera77 Ver Mensaje
Hola pablomartinez_22 estube haciendo las pruebas y me levanta todo bien




Si tu base de datos esta con los juegos de caracteres UTF8, al archivo antiparras.csv convertilo a UTF8 con un editor de texto como Notepad++ y probalo. Pero me parece raro.


¡Saludos!
Si, en el phpmyadmin me lo muestra como a vos, pero cuando llamo a la tabla desde el archivo php me tira el error.
  #10 (permalink)  
Antiguo 03/11/2015, 13:03
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: Simbolos en tabla mysql

Entonces el error está al realizar la toma de datos desde PHP.
En alguna parte hay al menos un paso que corrompe el UTF8 de la tabla y te devuelve caracteres incorrectos.
deberás revisar linea a linea, y script a script hasta encontrar donde está el fallo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 03/11/2015, 13:04
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 5 meses
Puntos: 7
Respuesta: Simbolos en tabla mysql

Ahora si mostrame tu archivo php como estas obteniendo esos datos y pintadolos en pantalla.
  #12 (permalink)  
Antiguo 03/11/2015, 13:11
 
Fecha de Ingreso: noviembre-2015
Mensajes: 7
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Simbolos en tabla mysql

Cita:
Iniciado por gonzaherrera77 Ver Mensaje
Ahora si mostrame tu archivo php como estas obteniendo esos datos y pintadolos en pantalla.
aca va el codigo completo, el query sql y la inserción en una tabla:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="estilos.css">
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<meta name="author" content="Pablo Martinez">
<title>Antiparras</title>
</head>
<body>
<div class="cuerpo">
<?php
include ("encabezado.php");
?>
<?php
$sql = "SELECT * FROM acc_antiparras WHERE 1=1";
//echo $sql;
$res = mysqli_query ($conn, $sql);
/*if(!$res){
mysqli_error($conn);
}*/
$cant_total = mysqli_num_rows($res);
$cant_paginas = ceil($cant_total/REGXPAG);

if(!$_GET['pag']){
$_GET['pag']=1;
}

$sql .= " LIMIT ".($_GET['pag']-1)*REGXPAG. ", ".REGXPAG;
$res = mysqli_query($conn, $sql);
//echo mysqli_error($conn);
?>

</div>
<div id="centro">
<h1>Antiparras</h1>
<table width="1024px" cellpadding="5" cellspacing="0" border="1" align="center">
<tr bgcolor="#efc789">
<th width="200px">Marca</th>
<th>Producto</th>
</tr>
<?php
while($fila = mysqli_fetch_assoc($res)){
echo "<tr bgcolor='".(($i++%2==0)? "#ccc": "#fff")."'>
<td>".$fila['Marca']."</td>
<td>".$fila['Producto']."</td>
</tr>";
}
?>
</table>

<?php
for ($i=1; $i <= $cant_paginas; $i++) {
echo "<a href='acc_antiparras.php?pag=".$i."'>".$i." </a>";
}
?>
</div>
</body>
</html>
  #13 (permalink)  
Antiguo 03/11/2015, 13:35
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 5 meses
Puntos: 7
Respuesta: Simbolos en tabla mysql

Te dejo un breve ejemplo

Código PHP:
Ver original
  1. <!DOCTYPE html>
  2. <html>
  3.    <head>
  4.       <title>Antiparras</title>
  5.       <meta charset="UTF-8">
  6.    </head>
  7.    <body>
  8. <?php
  9.    //Conexion DB
  10.    $db = mysqli_connect('localhost', 'root', '', 'base1') or die('Problemas DB');
  11.    //Establezco el conjunto de caracteres predeterminado del cliente
  12.    mysqli_set_charset($db, "utf8");
  13.    
  14.    $ssql = 'SELECT * FROM antiparras';
  15.    
  16.    $reg = mysqli_query($db, $ssql);
  17.    
  18.    //Muestro todo los registo
  19.    while($row = mysqli_fetch_array($reg)) {
  20.       echo $row[0].'<br />';
  21.       echo $row[1].'<br />';
  22.       echo $row[2].'<br />';
  23.    }
  24. ?>
  25.    </body>
  26. </html>

Con la función mysqli_set_charset estableces el conjunto de caracteres del cliente es decir te sirve los datos en ese formato por asi decirlo, ya con esos te tendria que mostrar todos los datos bien.

¡Saludos!
  #14 (permalink)  
Antiguo 03/11/2015, 13:50
 
Fecha de Ingreso: noviembre-2015
Mensajes: 7
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Simbolos en tabla mysql

Cita:
Iniciado por gonzaherrera77 Ver Mensaje
Te dejo un breve ejemplo

Código PHP:
Ver original
  1. <!DOCTYPE html>
  2. <html>
  3.    <head>
  4.       <title>Antiparras</title>
  5.       <meta charset="UTF-8">
  6.    </head>
  7.    <body>
  8. <?php
  9.    //Conexion DB
  10.    $db = mysqli_connect('localhost', 'root', '', 'base1') or die('Problemas DB');
  11.    //Establezco el conjunto de caracteres predeterminado del cliente
  12.    mysqli_set_charset($db, "utf8");
  13.    
  14.    $ssql = 'SELECT * FROM antiparras';
  15.    
  16.    $reg = mysqli_query($db, $ssql);
  17.    
  18.    //Muestro todo los registo
  19.    while($row = mysqli_fetch_array($reg)) {
  20.       echo $row[0].'<br />';
  21.       echo $row[1].'<br />';
  22.       echo $row[2].'<br />';
  23.    }
  24. ?>
  25.    </body>
  26. </html>

Con la función mysqli_set_charset estableces el conjunto de caracteres del cliente es decir te sirve los datos en ese formato por asi decirlo, ya con esos te tendría que mostrar todos los datos bien.

¡Saludos!
Y se hizo la luz!!! jaja. Listo, solucionado. Solo tuve que agregar mysqli_set_charset($db, "utf8"); debajo de la conexión y salio andando.
Muchas gracias por tu tiempo!

Etiquetas: mysql
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 20:49.