1

Cuando muestro los datos de una tabla desde MySQL me sale así.

introducir la descripción de la imagen aquí

Sale ese signo en el lugar palabras que llevan acento o ñ , y en la base de datos se ven bien que puede ser?

Este es mi código

  <!DOCTYPE html>
  <html>
  <head>
    <title></title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">

    <meta http-equiv="Content-Type" content="text/html; charset=utf32_bin" />
    
  </head>
  <body>
    
    <?php 
    $link = new PDO('mysql:host=localhost;dbname=ej', 'root', '');

    ?>
    <table class="table">
      <thead>
        <tr>
         <th scope="col">id</th>
         <th scope="col">nombre</th>
         <th scope="col">apellido</th>
         
       </tr>
     </thead>
     <?php 

     foreach ($link->query('SELECT * FROM personas') as $row){  ?> 
      <tr>
        <td><?php echo $row['id']?></td>
        <td><?php echo $row['nombre'] ?></td>
        <td><?php echo $row['apellido'] ?></td>
        <td><a href="#">Mostrar</a> <a href="#">Modificar</a> <a href="#">Eliminar</a></td>
      </tr>
      <?php
    }
    
    ?>
  </table>


  <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
  

</body>
</html>
fredmar
  • 179
  • 2
  • 3
  • 10
  • 1
    pon tu conexión de este modo y comentame que resulta `new PDO('mysql:host=localhost;dbname=ej;chraset=utf8', 'root', '');` –  Dec 30 '18 at 02:41
  • 1
    Trata charset=utf-8 en lugar de charset=utf32_bin – Juan Carlos Dec 30 '18 at 02:42
  • 2
    además la etiqueta de tu html debe ser así: `` es decir desecha la que tienes y pon esta que te digo además de lo que te pedí que hicieras arriba –  Dec 30 '18 at 02:43
  • no funciona, ya lo había intentado antes y nada – fredmar Dec 30 '18 at 03:02

1 Answers1

0

Me ha pasado en ciertas ocasiones que al querer recuperar los datos con PHP desde MySQL los acentos y las "ñ" salen de una manera incorrecta. Por favor prueba las siguientes soluciones:

  1. Por favor utiliza la función utf8_encode para los tipos de dato string que desees imprimir. Como ejemplo, hazlo en la parte <?php echo $row['nombre']; ?> por <?php echo utf8_encode($row['nombre']); ?>. Además, trata de agregar un ; al finalizar tus echo (Sé que a veces no es necesario por la configuración que tengas en el php.ini, pero siempre es buena práctica hacerlo).
  2. Por favor utiliza la etiqueta <meta charset="UTF-8"> entre las etiquetas <head> de tu código HTML para que éste pueda ser bien interpretado por el navegador.

Espero que te sirva. Saludos.

Fernando Torres
  • 1,443
  • 11
  • 23