Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] eterno problema con utf8 y la ñ que hago

Estas en el tema de eterno problema con utf8 y la ñ que hago en el foro de PHP en Foros del Web. Saludos colegas. Tengo un problemilla el cual cuando actualizo las ñ en mi base de datos mysql con este codigo. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver ...
  #1 (permalink)  
Antiguo 01/05/2018, 11:41
 
Fecha de Ingreso: abril-2011
Mensajes: 168
Antigüedad: 13 años
Puntos: 5
Pregunta eterno problema con utf8 y la ñ que hago

Saludos colegas.

Tengo un problemilla el cual cuando actualizo las ñ en mi base de datos mysql con este codigo.

Código PHP:
Ver original
  1. include "conexion.php";
  2.  
  3. $conexion = mysqli_connect("localhost", "root", "", "mybd");
  4. mysqli_select_db($conexion, "registro");
  5. mysqli_query($conexion, "SET CHARACTER SET utf8");

en mysql me guarda la ñ y no sale asi ���
pero al extraer los datos de mysql en index.php
todas las ñ me salen asi ����� lo mismo las tildes.
en mi index.php tengo el meta asi:

Código PHP:
Ver original
  1. <head>
  2.        
  3.         <!--<meta charset='utf-8' /> -->
  4.         <title>MyOpen.</title>
  5.  
  6.         <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  7.      
  8. <link type="text/css" rel="stylesheet" href="/myopen/css/materialize.min.css"  media="screen,projection"/>
  9.        
  10.         <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  11.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  12.     </head>

lo mas raro es que cargo un mapa en js con mapbox y en el icono si muestra las ñ pero ya abajo en la descripción sale de nuevo ���

mi base de datos toda esta en:
Conjunto de caracteres del servidor: UTF-8 Unicode (utf8)
cotejamiento utf8_general_ci.

alguna idea de que podra ser?

gracias por sus amables comentarios
  #2 (permalink)  
Antiguo 01/05/2018, 16:36
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: eterno problema con utf8 y la ñ que hago

Bueno yo utilizo utf8_spanish como cotejamiento de las tablas, guardo la ñ o palabras con acentos y estas se guardan codificadas, luego simplemente las llamo y no tengo necesidad de recodificar, solo con el meta basta.

Ahora nunca he usado esto mysqli_query($conexion, "SET CHARACTER SET utf8"); y en el meta solo utilizo esto

<meta charset="UTF-8">
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 01/05/2018, 17:05
 
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 xfxstudios Ver Mensaje
Bueno yo utilizo utf8_spanish como cotejamiento de las tablas, guardo la ñ o palabras con acentos y estas se guardan codificadas, luego simplemente las llamo y no tengo necesidad de recodificar, solo con el meta basta.

Ahora nunca he usado esto mysqli_query($conexion, "SET CHARACTER SET utf8"); y en el meta solo utilizo esto

<meta charset="UTF-8">

tienes mucha razón y por esto mismo se me hace raro por que ya cambie a latin1 a utf8 spanish y ninguno me sirve.

y lo mas raro es que sea cuando traigo los datos de mi db por ejemplo

Código PHP:
Ver original
  1. <input type="text" tabindex="1" autocomplete="off" maxlength="80" class="form-control" value="<?php echo $_SESSION['mensaje']; ?>" name="mensaje" required>

en el input es donde No me funcionan los caracteres en es resto del index si lo hace
  #4 (permalink)  
Antiguo 02/05/2018, 02:12
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: eterno problema con utf8 y la ñ que hago

Tus tablas y campos siempre han estado en UTF8 o cambiaste recientemente el cotejamiento?

Si la respuesta es sí, solo cambiaste el cotejamiento o también convertiste lo que ya tenías almacenado en la base de datos?

Te pasa con todos los datos o solo con registros nuevos... o anteriores?
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 02/05/2018, 08:29
 
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 Triby Ver Mensaje
Tus tablas y campos siempre han estado en UTF8 o cambiaste recientemente el cotejamiento?

Si la respuesta es sí, solo cambiaste el cotejamiento o también convertiste lo que ya tenías almacenado en la base de datos?

Te pasa con todos los datos o solo con registros nuevos... o anteriores?
saludos Triby te muestro el codigo completo con las tablas.

Código PHP:
Ver original
  1. <?php
  2. #inicio session
  3.  
  4. ?>
  5.  
  6. <!DOCTYPE html>
  7. <html lang="es">
  8.     <head>
  9.        
  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>MyOp.</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="/myop/php/actualizar.php" method="POST"  >
  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. <input type="text" tabindex="1"
  43.  autocomplete="off" maxlength="80" class="form-control"
  44.  
  45.  
  46. value="<?php echo  $_SESSION['mensaje']; ?>"
  47.  
  48.  
  49.   name="mensaje" required>
  50.  
  51.                     <h4>Horario De Atención.</h4>
  52.                                      
  53.                     <table>
  54.                         <hr></hr>        
  55.                         <tr>
  56.                             <th><h5 class="titulo">Abierto Desde.</h5>
  57.                  
  58.     <td><input type="time" value="<?php echo $_SESSION['horaAm']; ?>" name="horaAm">
  59.    
  60.     <td><select name="HoraA" id="HoraA">
  61.             <option name="HoraA" id="HoraA" value="<?php echo $_SESSION['HoraA']; ?>"> <?php echo $_SESSION['HoraA']; ?> </option>
  62.             <option value="AM">AM</option>
  63.             <option value="PM">PM</option>
  64.            
  65.         </select>
  66.     </td>
  67.     <!--<td><input type="text" value="<?php echo $_SESSION['HoraA']; ?>" name="HoraA" placeholder="Am o Pm" maxlength="2" >-->
  68.                
  69.                
  70.     <td><select name="diaA" id="diaA">
  71.             <option name="diaA" id="diaA" value="<?php echo $_SESSION['diaA']; ?>"> <?php echo $_SESSION['diaA']; ?> </option>
  72.             <option value="Lunes">Lunes</option>
  73.             <option value="Martes">Martes</option>
  74.             <option value="Miercoles">Miercoles</option>
  75.             <option value="Jueves">Jueves</option>
  76.             <option value="Viernes">Viernes</option>
  77.             <option value="Sabado">Sabado</option>
  78.             <option value="Domingo">Domingo</option>
  79.         </select>
  80.     </td>
  81.     </td>
  82.     </td>
  83.     </th>
  84.     </div>
  85.     </tr>
  86.  
  87.  
  88.  
  89.                         <tr>
  90.                             <th><h5 class="titulo">Abierto Hasta.</h5></th>
  91.                            
  92.  
  93. <td><input type="time" value="<?php echo $_SESSION['horaPm']; ?>" name="horaPm" required>
  94.  
  95. <td><select name="HoraP" id="HoraP">
  96.             <option name="HoraP" id="HoraP" value="<?php echo $_SESSION['HoraP']; ?>"> <?php echo $_SESSION['HoraP']; ?> </option>
  97.             <option value="AM">AM</option>
  98.             <option value="PM">PM</option>
  99.            
  100.         </select>
  101.     </td>
  102.  
  103.  
  104.     <!--<td><input type="text" value="<?php echo $_SESSION['HoraP']; ?>" name="HoraP" placeholder="Am o Pm" maxlength="2" >-->
  105.  
  106.     <td><select  name="diaC" id="diaC">
  107.           <option value="<?php echo $_SESSION['diaC']; ?>"> <?php echo $_SESSION['diaC']; ?> </option>
  108.           <option value="Lunes">Lunes</option>
  109.           <option value="Martes">Martes</option>
  110.           <option value="Miercoles">Miercoles</option>
  111.           <option value="Jueves">Jueves</option>
  112.           <option value="Viernes">Viernes</option>
  113.           <option value="Sabado">Sabado</option>
  114.           <option value="Domingo">Domingo</option>
  115.     </select>
  116.      </td>
  117.      </td>
  118.      </td>
  119.      </tr>
  120. </table>
  121.                     <hr></hr>
  122.                     <br>
  123.  
  124.  
  125.                     <label for="nombre">Nombre Usuario.</label>
  126.                     <input type="text" tabindex="1" class="form-control" value="<?php echo $_SESSION['nombre']; ?>" name="nombre" required>
  127.                 </div>
  128.                 <div class="form-group">
  129.                     <label for="email">Email.</label>
  130.                     <input type="text" tabindex="2"  class="form-control" value="<?php echo $_SESSION['email']; ?>" name="email" required>
  131.                 </div>
  132.                 <div class="form-group">
  133.                     <label for="empresa">Empresa.</label>
  134.                     <input type="text" id="empresa" class="form-control" value="<?php echo utf8_encode ($_SESSION['n_empresa']); ?>" name="empresa" required>
  135.                 </div>
  136.                 <div class="form-group">
  137.                     <label for="actividad">Actividad.</label>
  138.                     <input type="text"  class="form-control" value="<?php echo $_SESSION['actividad']; ?>" name="actividad" >
  139.                 </div>
  140.                 <div class="form-group">
  141.                     <label for="direccion">Dirección.</label>
  142.                     <input type="text" id="dir" class="form-control" value="<?php echo $_SESSION['dir']; ?>" name="direccion" >
  143.                 </div>
  144.  
  145.                 <div class="form-group">
  146.                     <label for="telefono">Teléfono.</label>
  147.                     <input type="text" id="tel" class="form-control" value="<?php echo $_SESSION['tel']; ?>" name="telefono" >
  148.                 </div>
  149.                 <!-- <div class="form-group">
  150.                    <label for="telefono">Contraseña</label>
  151.                    <input type="text" id="tel" class="form-control" value="<?php echo $_SESSION['password']; ?>" name="telefono" >
  152.                  </div>-->
  153.  
  154.  
  155.                 <input type="hidden" name="id" value="<?php echo $_SESSION['id']; ?>">
  156.                 <button type="submit" class="btn btn-default">Actualizar Datos.</button>
  157.             </form>
  158.  
  159.         </fieldset>
  160.  
  161.         <br></br>
  162.  
  163.  
  164.      
  165.  
  166.  
  167.     </body>
  168. </html>

como puedes ver arriba puse varias ñññ y si las carga bien en html.

ahora con respecto a tu pregunta si cambie el cotejamiento, la respuesta es si, es mas volvi a crear la base de datos en utf8_general_ci y sigue el error.

con respecto a la pregunta de las tablas, efectivamente es en la tabla cuando me carga los datos con ñ me arroja carácter especial siendo que en mysql esta la ñ normal.
cuando ingreso datos nuevos escribo por ejemplo "mañana abrimos a las 8am"
el sistema lo carga bien y se muestra la ñ, pero cuando cierro sesión y vuelvo a iniciar , el sistema vuelve y me arroja ���y no la ñññ.

no se si me haga entender muy bien.

gracias por tu amable ayuda.
  #6 (permalink)  
Antiguo 02/05/2018, 09:49
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: eterno problema con utf8 y la ñ que hago

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"
  #7 (permalink)  
Antiguo 02/05/2018, 16:06
 
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?.
  #8 (permalink)  
Antiguo 02/05/2018, 16:15
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: eterno problema con utf8 y la ñ que hago

Si todo lo tienes basado en utf8, no necesitas codificar o decodificar el utf8, a menos que se tratara de un contenido de una fuente externa, como un email, un archivo, una respuesta de un ws, etc.

Los datos del usuario no se consideran fuente externa para este caso.


Prueba a usar simplemente value="<?php echo $_SESSION['mensaje']; ?>"
  #9 (permalink)  
Antiguo 02/05/2018, 16:19
 
Fecha de Ingreso: abril-2011
Mensajes: 168
Antigüedad: 13 años
Puntos: 5
Respuesta: eterno problema con utf8 y la ñ que hago

Ya lo solucione asi, creo que es una chambonada pero funciono.

Código PHP:
Ver original
  1. value="<?php header('Content-Type: text/html; charset=utf-8'); echo ($_SESSION['mensaje']); ?>"
pero lo malo es que cuando cierro session y vulevo a abrir vuelve y sale��

Última edición por dairo65; 02/05/2018 a las 16:25
  #10 (permalink)  
Antiguo 02/05/2018, 16:26
 
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
Si todo lo tienes basado en utf8, no necesitas codificar o decodificar el utf8, a menos que se tratara de un contenido de una fuente externa, como un email, un archivo, una respuesta de un ws, etc.

Los datos del usuario no se consideran fuente externa para este caso.


Prueba a usar simplemente value="<?php echo $_SESSION['mensaje']; ?>"
Asi lo tenia inicialmente pero no me carga nada solo �� ��
osea cierro sesion y abro de nuevo y solo me carga �� ��

inclusive solo deje el index.php con estos datos

Código PHP:
Ver original
  1. <?php
  2. #inicio session
  3.  
  4. header('Content-Type: text/html; charset=utf-8');
  5.  echo utf8_encode ($_SESSION['mensaje']);
  6. ?>

y me sale asi;

mañana es el dÃ*a

Última edición por dairo65; 02/05/2018 a las 16:57
  #11 (permalink)  
Antiguo 02/05/2018, 17:25
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: eterno problema con utf8 y la ñ que hago

Bueno, de la lista que te puse, ¿cuáles puntos revisaste que se estén cumpliendo?

Hace mucho tenía estos mismos problemas, pero al pasar todos mis códigos (archivos .php y también los de javascript) a utf8 y al colocar las bases de datos con el charset tal como te indiqué, en el código puedo incluso usar nombres de variables con acentos.


como últimas recomendaciones, si te es posible cambia la configuración de php, en el php.ini
default_charset = "utf-8"
mbstring.internal_encoding=utf-8
mbstring.http_output=UTF-8
mbstring.encoding_translation=On
mbstring.func_overload=6

y para la conección es importante poner los "names" también en utf8.
  #12 (permalink)  
Antiguo 02/05/2018, 17:47
 
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
Bueno, de la lista que te puse, ¿cuáles puntos revisaste que se estén cumpliendo?

Hace mucho tenía estos mismos problemas, pero al pasar todos mis códigos (archivos .php y también los de javascript) a utf8 y al colocar las bases de datos con el charset tal como te indiqué, en el código puedo incluso usar nombres de variables con acentos.


como últimas recomendaciones, si te es posible cambia la configuración de php, en el php.ini
default_charset = "utf-8"
mbstring.internal_encoding=utf-8
mbstring.http_output=UTF-8
mbstring.encoding_translation=On
mbstring.func_overload=6



y para la conección es importante poner los "names" también en utf8.
bueno ya hice lo que me dijiste y en el php.ini y sigue igual.

lo que veo es que cuando el sistema trae los datos de mysql y los pone en php en el index. php es donde no aparecen las ñ.

no se que sera, es como si al traer los datos a index.php conviertiera los caracteres especiales de ññññ a �o�o

Última edición por dairo65; 02/05/2018 a las 17:53
  #13 (permalink)  
Antiguo 03/05/2018, 09:11
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: eterno problema con utf8 y la ñ que hago

Si el problema ocurre al traer los datos de la base de datos, es muy posible que éstos hayan sido almacenados en un charset distinto, la prueba más simple es probar a guardar y traer datos nuevos. Si los datos nuevos salen bien, bastaría con convertir los datos antiguos de la base de datos, o bien, si aún no lo has hecho, hacer el set names, al inicar tu conexión a mysql, con

mysqli_query("SET NAMES utf8mb4"); (o sólo utf8 en tu caso).
  #14 (permalink)  
Antiguo 03/05/2018, 09:46
 
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
Si el problema ocurre al traer los datos de la base de datos, es muy posible que éstos hayan sido almacenados en un charset distinto, la prueba más simple es probar a guardar y traer datos nuevos. Si los datos nuevos salen bien, bastaría con convertir los datos antiguos de la base de datos, o bien, si aún no lo has hecho, hacer el set names, al inicar tu conexión a mysql, con

mysqli_query("SET NAMES utf8mb4"); (o sólo utf8 en tu caso).
Bueno te comento lo que hice.

cuando llego al formulario y ahi es donde actualizo mis mensajes mediante el método pos con el form de la siguiente forma.

Código PHP:
Ver original
  1. <form role="form"  action="/myopen/php/actualizar.php" method="POST" accept-charset="utf8mb4_unicode_ci" >

ahí ya si le escribo "mañana día Especial" y en la base de datos me la guarda muy bien con las ñ y tildes.( cambie esta casilla a cotejamiento utf8mb4_unicode_ci )
cuando le doy boton actualizar, el sistema recarga la pagina de nuevo y queda este mismo mensaje asi; "mañana día Especial"

hasta ahi supuestamente todo normal, hasta cuando cierro sesion y vuelvo a abrirla ya me carga el mismo mensaje asi: mañana dÃ*a Especial.

lo otro que hice fue crear una base de datos nueva con campos distintos y nombres distintos con el cotejamiento utf8mb4_unicode_ci y realice nuevas conexiones asi:

Código PHP:
Ver original
  1. <?php
  2. $conexion = mysqli_connect("localhost", "root", "", "myop");
  3. mysqli_query($conexion, "SET CHARACTER SET utf8");
  4. ?>

pero el problema persiste.

lo que veo es que php no me esta mostrando las ñ cuando las traído de la base de datos, las guarda bien la actualiza bien pero al extraer las ñ de mysql vuelve y me sale el error.
  #15 (permalink)  
Antiguo 03/05/2018, 13:03
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: eterno problema con utf8 y la ñ que hago

Bueno, ¿y le pusiste el set names?

Código PHP:
Ver original
  1. <?php
  2.     $conexion = mysqli_connect("localhost", "root", "", "myop");
  3.     mysqli_query($conexion, "SET CHARACTER SET utf8");
  4.     mysqli_query($conexion, "SET NAMES utf8");
  5.     ?>
  #16 (permalink)  
Antiguo 03/05/2018, 16:45
 
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
Bueno, ¿y le pusiste el set names?

Código PHP:
Ver original
  1. <?php
  2.     $conexion = mysqli_connect("localhost", "root", "", "myop");
  3.     mysqli_query($conexion, "SET CHARACTER SET utf8");
  4.     mysqli_query($conexion, "SET NAMES utf8");
  5.     ?>
si señor ya puse en la conexion.php estos datos

Código PHP:
Ver original
  1. <?php
  2.     $conexion = mysqli_connect("localhost", "root", "", "myop");
  3.     mysqli_query($conexion, "SET CHARACTER SET utf8");
  4.     mysqli_query($conexion, "SET NAMES utf8");

al guardar en mysql las ñ me sale en la bd en simbolo y al sacarlo ya me saca la ñ normal, pero cuando cargo en el mapa de mapbox por javascript me vuelven a salir los simbolos �������

Última edición por dairo65; 03/05/2018 a las 17:12
  #17 (permalink)  
Antiguo 03/05/2018, 22:54
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: eterno problema con utf8 y la ñ que hago

Entonces el problema ya no es PHP, sino Javascript?
__________________
- León, Guanajuato
- GV-Foto
  #18 (permalink)  
Antiguo 04/05/2018, 09:27
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: eterno problema con utf8 y la ñ que hago

Cita:
Iniciado por Triby Ver Mensaje
Entonces el problema ya no es PHP, sino Javascript?
Muy probablemente sí.

dairo65: si mapbox es una librería que cargas, deberías verificar que la estés invocado con utf8, algo así:

<script src="mi_libreria.js" type="text/JavaScript" charset="UTF-8"></script>

opcionalmente, abrir y guardar el código .js pasándolo a utf8 en caso de que no lo esté.
  #19 (permalink)  
Antiguo 04/05/2018, 16:48
 
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
Muy probablemente sí.

dairo65: si mapbox es una librería que cargas, deberías verificar que la estés invocado con utf8, algo así:

<script src="mi_libreria.js" type="text/JavaScript" charset="UTF-8"></script>

opcionalmente, abrir y guardar el código .js pasándolo a utf8 en caso de que no lo esté.
vale voy a verificar, pero antes tengo una duda, yo se que es boba pero hay que hacerla.

en la base de datos se deben ingresar la letra ñ o debe quedar asi ñ
como es la forma correcta en la cual deberían de ingresar los caracteres especiales??

desde ya muchas gracias.
  #20 (permalink)  
Antiguo 04/05/2018, 17:31
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: eterno problema con utf8 y la ñ que hago

En la base de datos debe quedar el caracter tal cual es, en este caso ñ (eñe).

Si queda de otra forma (ñ) es que el caracter al ser insertado tenía un charset diferente al del definido en el campo.

Por cierto, recuerda que si bien las tablas y las bases de datos no tienen un charset como tal, sí pueden tener definido un charset por defecto, y es posible que un campo tenga un charset diferente al definido por defecto en la tabla o en la base de datos, por lo que debes tener cuidados de definirlo bien a los tres niveles.
  #21 (permalink)  
Antiguo 04/05/2018, 18:30
 
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
En la base de datos debe quedar el caracter tal cual es, en este caso ñ (eñe).

Si queda de otra forma (ñ) es que el caracter al ser insertado tenía un charset diferente al del definido en el campo.

Por cierto, recuerda que si bien las tablas y las bases de datos no tienen un charset como tal, sí pueden tener definido un charset por defecto, y es posible que un campo tenga un charset diferente al definido por defecto en la tabla o en la base de datos, por lo que debes tener cuidados de definirlo bien a los tres niveles.
a bueno muchas gracias a todos por sus amables comentarios la verdad esto me dio dolor de cabeza pero ya por fin lo resolví, era una burrada que no había visto, lo que paso fue que en los documentos donde guardaba y actualizaba mi base de datos tenia una nueva conexión y por esa bobada no me guardaba bien, dios mio.

de nuevo gracias a todos por sus amables comentarios aprendí mucho.

Etiquetas: html, mysql, query, registro, select
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 06:50.