Ver Mensaje Individual
  #7 (permalink)  
Antiguo 02/05/2018, 16:06
dairo65
 
Fecha de Ingreso: abril-2011
Mensajes: 168
Antigüedad: 13 años
Puntos: 5
Respuesta: eterno problema con utf8 y la ñ que hago

Cita:
Iniciado por ocp001a Ver Mensaje
Para la base de datos, recientemente se aconseja el uso del cotejamiento utf8mb4_unicode_ci, para poder guardar textos con emojis o caracteres internacionales y prevenir posibles problemas y riesgos en el almacenamiento de los datos.

Además hay que tener en cuenta lo siguiente:

Declarar el charset de la conexión a la base de datos en utf8 (ya lo haces)
Declarar los "names" de la base de datos en utf8 también: query("SET NAMES utf8mb4");
Declarar en tu html que es utf8 <meta charset="utf-8">
Verificar si php está generando el contenido en utf8, si no, forzarlo en el header header('Content-Type: text/html; charset=utf-8');
Verificar que tu código (tu archivo php) está guardado en utf8, esto suele pasar desapercibido a mucha gente y ser la causa del problema, sobre todo para los que trabajan en equipos windows.
Finalmente, aunque con esto debería bastar, en los formularios puedes declarar el uso del utf8 con accept-charset="UTF-8"

saludos.
bueno hice lo que me dijiste y te lo muestro.
tengo la conexion.php así(no se si estará mal o estará bien tu me dirás)

Código PHP:
Ver original
  1. <?php
  2.  
  3. /* aqui conecta la base de datos para poder loguear al los usuarios de myopen*/
  4.  
  5. $conexion = new mysqli();
  6.  
  7. $conexion->connect('localhost','root','','myop');
  8. mysqli_query($conexion, "SET CHARACTER SET utf8");
  9. header('Content-Type: text/html; charset=utf-8');
  10.  
  11. if($conexion->connect_error){
  12.     die ("no hay conexion: ".$conectar->connect_error);
  13.  
  14. }
  15.  
  16.  
  17. ?>

y en el index.php lo deje asi:

Código PHP:
Ver original
  1. <?php
  2. #inicio session
  3.  
  4. ?>
  5.  
  6. <!DOCTYPE html>
  7. <html lang="es">
  8.     <head>
  9.        <meta charset="utf-8">
  10.       <!--<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>-->
  11.       <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0"/>
  12.         <title>MyOpen.</title>
  13.  
  14.     </head>
  15.     <body>
  16.  
  17.      
  18.         <h4>Bienvenido a su plan Gratis</h4>
  19.         <h5> <?php echo $_SESSION['email']; ?></h5>
  20.  
  21.         <?php
  22.         echo '<h5 align=center><a href="/myopen/admin/logout.php">Logout</a></h5>';
  23.         ?>
  24.  
  25.        
  26.  
  27.  
  28.         <br></br>
  29.  
  30.         <fieldset>
  31.  
  32.             <form role="form"  action="/myopen/php/actualizar.php" method="POST" accept-charset="UTF-8" >
  33.                 <div class="form-group">
  34.  
  35.  
  36.  
  37.                     <h4>Mensaje Al Público.</h4>
  38.  
  39.                     <p class="mensajeTitle">Por favor, ingresa el mensaje que quieres que salga en el mapa:</p>
  40.                     <p class="mensajeTitle">Máximo 80 caracteres  ññññññññññññññññññññññññññ:</p>
  41.                     <!--
  42.                     <textarea class="form-control" name="mensaje"><?php echo $_SESSION['mensaje']; ?></textarea>
  43.                        //queda pendiente este codigo
  44.                     -->
  45. <input type="text" tabindex="1"
  46.  autocomplete="off" maxlength="80" class="form-control"
  47.  
  48.  
  49. value="<?php echo  $_SESSION['mensaje']; ?>"
  50.  
  51.  
  52.   name="mensaje" required>
  53.  
  54.                     <h4>Horario De Atención.</h4>
  55.                                      
  56.                     <table>
  57.                         <hr></hr>        
  58.                         <tr>
  59.                             <th><h5 class="titulo">Abierto Desde.</h5>
  60.                  
  61.     <td><input type="time" value="<?php echo $_SESSION['horaAm']; ?>" name="horaAm">
  62.    
  63.     <td><select name="HoraA" id="HoraA">
  64.             <option name="HoraA" id="HoraA" value="<?php echo $_SESSION['HoraA']; ?>"> <?php echo $_SESSION['HoraA']; ?> </option>
  65.             <option value="AM">AM</option>
  66.             <option value="PM">PM</option>
  67.            
  68.         </select>
  69.     </td>
  70.     <!--<td><input type="text" value="<?php echo $_SESSION['HoraA']; ?>" name="HoraA" placeholder="Am o Pm" maxlength="2" >-->
  71.                
  72.                
  73.     <td><select name="diaA" id="diaA">
  74.             <option name="diaA" id="diaA" value="<?php echo $_SESSION['diaA']; ?>"> <?php echo $_SESSION['diaA']; ?> </option>
  75.             <option value="Lunes">Lunes</option>
  76.             <option value="Martes">Martes</option>
  77.             <option value="Miercoles">Miercoles</option>
  78.             <option value="Jueves">Jueves</option>
  79.             <option value="Viernes">Viernes</option>
  80.             <option value="Sabado">Sabado</option>
  81.             <option value="Domingo">Domingo</option>
  82.         </select>
  83.     </td>
  84.     </td>
  85.     </td>
  86.     </th>
  87.     </div>
  88.     </tr>
  89.  
  90.  
  91.  
  92.                         <tr>
  93.                             <th><h5 class="titulo">Abierto Hasta.</h5></th>
  94.                            
  95.  
  96. <td><input type="time" value="<?php echo $_SESSION['horaPm']; ?>" name="horaPm" required>
  97.  
  98. <td><select name="HoraP" id="HoraP">
  99.             <option name="HoraP" id="HoraP" value="<?php echo $_SESSION['HoraP']; ?>"> <?php echo $_SESSION['HoraP']; ?> </option>
  100.             <option value="AM">AM</option>
  101.             <option value="PM">PM</option>
  102.            
  103.         </select>
  104.     </td>
  105.  
  106.  
  107.     <!--<td><input type="text" value="<?php echo $_SESSION['HoraP']; ?>" name="HoraP" placeholder="Am o Pm" maxlength="2" >-->
  108.  
  109.     <td><select  name="diaC" id="diaC">
  110.           <option value="<?php echo $_SESSION['diaC']; ?>"> <?php echo $_SESSION['diaC']; ?> </option>
  111.           <option value="Lunes">Lunes</option>
  112.           <option value="Martes">Martes</option>
  113.           <option value="Miercoles">Miercoles</option>
  114.           <option value="Jueves">Jueves</option>
  115.           <option value="Viernes">Viernes</option>
  116.           <option value="Sabado">Sabado</option>
  117.           <option value="Domingo">Domingo</option>
  118.     </select>
  119.      </td>
  120.      </td>
  121.      </td>
  122.      </tr>
  123. </table>
  124.                     <hr></hr>
  125.                     <br>
  126.  
  127.  
  128.                     <label for="nombre">Nombre Usuario.</label>
  129.                     <input type="text" tabindex="1" class="form-control" value="<?php echo $_SESSION['nombre']; ?>" name="nombre" required>
  130.                 </div>
  131.                 <div class="form-group">
  132.                     <label for="email">Email.</label>
  133.                     <input type="text" tabindex="2"  class="form-control" value="<?php echo $_SESSION['email']; ?>" name="email" required>
  134.                 </div>
  135.                 <div class="form-group">
  136.                     <label for="empresa">Empresa.</label>
  137.                     <input type="text" id="empresa" class="form-control" value="<?php echo utf8_encode ($_SESSION['n_empresa']); ?>" name="empresa" required>
  138.                 </div>
  139.                 <div class="form-group">
  140.                     <label for="actividad">Actividad.</label>
  141.                     <input type="text"  class="form-control" value="<?php echo $_SESSION['actividad']; ?>" name="actividad" >
  142.                 </div>
  143.                 <div class="form-group">
  144.                     <label for="direccion">Dirección.</label>
  145.                     <input type="text" id="dir" class="form-control" value="<?php echo $_SESSION['dir']; ?>" name="direccion" >
  146.                 </div>
  147.  
  148.                 <div class="form-group">
  149.                     <label for="telefono">Teléfono.</label>
  150.                     <input type="text" id="tel" class="form-control" value="<?php echo $_SESSION['tel']; ?>" name="telefono" >
  151.                 </div>
  152.                 <!-- <div class="form-group">
  153.                    <label for="telefono">Contraseña</label>
  154.                    <input type="text" id="tel" class="form-control" value="<?php echo $_SESSION['password']; ?>" name="telefono" >
  155.                  </div>-->
  156.  
  157.  
  158.                 <input type="hidden" name="id" value="<?php echo $_SESSION['id']; ?>">
  159.                 <button type="submit" class="btn btn-default">Actualizar Datos.</button>
  160.             </form>
  161.  
  162.         </fieldset>
  163.  
  164.         <br></br>
  165.  
  166.  
  167.      
  168.  
  169.  
  170.     </body>
  171. </html>

y por otro lado puse el value asi:

Código PHP:
Ver original
  1. value="<?php echo utf8_encode ($_SESSION['mensaje']); ?>"
Este si me cargan bien las ñ pero cuando guardo una nueva ñ o tilde me lo muestra asi ��; y para que que cargue bien la ñ me toca cerrar sesion y volver a abril sesion ya carga normal la ñ.
ni con f5 carga la ñ, si no hasta que cierre la session y la cargue de nuevo.

pdta.
ya cambie la fila de la base de datos a utf8mb4_unicode_ci

alguna idea de que podra ser?.