Cita:
Iniciado por ocp001a 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<?php
/* aqui conecta la base de datos para poder loguear al los usuarios de myopen*/
$conexion = new mysqli();
$conexion->connect('localhost','root','','myop');
header('Content-Type: text/html; charset=utf-8');
if($conexion->connect_error){
die ("no hay conexion: ".$conectar->connect_error);
}
?>
y en el index.php lo deje asi:
Código PHP:
Ver original<?php
#inicio session
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<!--<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>-->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0"/>
<title>MyOpen.</title>
</head>
<body>
<h4>Bienvenido a su plan Gratis</h4>
<h5> <?php echo $_SESSION['email']; ?></h5>
<?php
echo '<h5 align=center><a href="/myopen/admin/logout.php">Logout</a></h5>';
?>
<br></br>
<fieldset>
<form role="form" action="/myopen/php/actualizar.php" method="POST" accept-charset="UTF-8" >
<div class="form-group">
<h4>Mensaje Al Público.</h4>
<p class="mensajeTitle">Por favor, ingresa el mensaje que quieres que salga en el mapa:</p>
<p class="mensajeTitle">Máximo 80 caracteres ññññññññññññññññññññññññññ:</p>
<!--
<textarea class="form-control" name="mensaje"><?php echo $_SESSION['mensaje']; ?></textarea>
//queda pendiente este codigo
-->
<input type="text" tabindex="1"
autocomplete="off" maxlength="80" class="form-control"
value="<?php echo $_SESSION['mensaje']; ?>"
name="mensaje" required>
<h4>Horario De Atención.</h4>
<table>
<hr></hr>
<tr>
<th><h5 class="titulo">Abierto Desde.</h5>
<td><input type="time" value="<?php echo $_SESSION['horaAm']; ?>" name="horaAm">
<td><select name="HoraA" id="HoraA">
<option name="HoraA" id="HoraA" value="<?php echo $_SESSION['HoraA']; ?>"> <?php echo $_SESSION['HoraA']; ?> </option>
<option value="AM">AM</option>
<option value="PM">PM</option>
</select>
</td>
<!--<td><input type="text" value="<?php echo $_SESSION['HoraA']; ?>" name="HoraA" placeholder="Am o Pm" maxlength="2" >-->
<td><select name="diaA" id="diaA">
<option name="diaA" id="diaA" value="<?php echo $_SESSION['diaA']; ?>"> <?php echo $_SESSION['diaA']; ?> </option>
<option value="Lunes">Lunes</option>
<option value="Martes">Martes</option>
<option value="Miercoles">Miercoles</option>
<option value="Jueves">Jueves</option>
<option value="Viernes">Viernes</option>
<option value="Sabado">Sabado</option>
<option value="Domingo">Domingo</option>
</select>
</td>
</td>
</td>
</th>
</div>
</tr>
<tr>
<th><h5 class="titulo">Abierto Hasta.</h5></th>
<td><input type="time" value="<?php echo $_SESSION['horaPm']; ?>" name="horaPm" required>
<td><select name="HoraP" id="HoraP">
<option name="HoraP" id="HoraP" value="<?php echo $_SESSION['HoraP']; ?>"> <?php echo $_SESSION['HoraP']; ?> </option>
<option value="AM">AM</option>
<option value="PM">PM</option>
</select>
</td>
<!--<td><input type="text" value="<?php echo $_SESSION['HoraP']; ?>" name="HoraP" placeholder="Am o Pm" maxlength="2" >-->
<td><select name="diaC" id="diaC">
<option value="<?php echo $_SESSION['diaC']; ?>"> <?php echo $_SESSION['diaC']; ?> </option>
<option value="Lunes">Lunes</option>
<option value="Martes">Martes</option>
<option value="Miercoles">Miercoles</option>
<option value="Jueves">Jueves</option>
<option value="Viernes">Viernes</option>
<option value="Sabado">Sabado</option>
<option value="Domingo">Domingo</option>
</select>
</td>
</td>
</td>
</tr>
</table>
<hr></hr>
<br>
<label for="nombre">Nombre Usuario.</label>
<input type="text" tabindex="1" class="form-control" value="<?php echo $_SESSION['nombre']; ?>" name="nombre" required>
</div>
<div class="form-group">
<label for="email">Email.</label>
<input type="text" tabindex="2" class="form-control" value="<?php echo $_SESSION['email']; ?>" name="email" required>
</div>
<div class="form-group">
<label for="empresa">Empresa.</label>
<input type="text" id="empresa" class="form-control" value="
<?php echo utf8_encode ($_SESSION['n_empresa']); ?>" name="empresa" required>
</div>
<div class="form-group">
<label for="actividad">Actividad.</label>
<input type="text" class="form-control" value="<?php echo $_SESSION['actividad']; ?>" name="actividad" >
</div>
<div class="form-group">
<label for="direccion">Dirección.</label>
<input type="text" id="dir" class="form-control" value="<?php echo $_SESSION['dir']; ?>" name="direccion" >
</div>
<div class="form-group">
<label for="telefono">Teléfono.</label>
<input type="text" id="tel" class="form-control" value="<?php echo $_SESSION['tel']; ?>" name="telefono" >
</div>
<!-- <div class="form-group">
<label for="telefono">Contraseña</label>
<input type="text" id="tel" class="form-control" value="<?php echo $_SESSION['password']; ?>" name="telefono" >
</div>-->
<input type="hidden" name="id" value="<?php echo $_SESSION['id']; ?>">
<button type="submit" class="btn btn-default">Actualizar Datos.</button>
</form>
</fieldset>
<br></br>
</body>
</html>
y por otro lado puse el value asi:
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?.