PHP - Los acentos me salen como un rombo y dentro el signo de interrogación

 
Vista:
sin imagen de perfil
Val: 86
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por Manuel (29 intervenciones) el 02/02/2021 18:58:11
Buenas tardes:
He cambiado el cotejamiento del servidor a : utf8mb4_unicode_ci
Las tablas a : utf8_general_ ci.
Cuando inserto datos en la base desde un formulario me recoge los acentos y las letras, ch, ll y eñe que creo que son las culpables de que salgan datos raros.
Sin embargo cuando extraigo datos desde la base para mostrar en la página web me sale el rombo con el signo de interrogación dentro, adjunto les envío código que empleo para extraer los datos código que me costo su trabajo montar y que lo conseguí gracias al foro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<style>
.left {float:left;}
.center {text-align:center;}
.rigth {float:right;}
</style>
<?php
$servername = 'localhost';
$username = 'usuario';
$password = 'clave';
$dbname = 'base_datos';
 
// Crear conexión
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verifica la conexión
if (!$conn) {
  die("La conexión falló: " . mysqli_connect_error());
}
// Convertir la fecha de formato 0000/00/00 a formato 00/00/0000
$sql = "SELECT DATE_FORMAT(nacimiento, '%d/%m/%Y') nacimiento, persona, DATE_FORMAT(muerte, '%d/%m/%Y') muerte FROM personas WHERE idP = 3 or idP = 4";
 
$result = mysqli_query($conn, $sql);
 
if (mysqli_num_rows($result) > 0) {
  // datos de salida de cada fila
	while($row = mysqli_fetch_assoc($result)) {
        echo "<div class='center'>";
        echo "<span class='left'>".$row["nacimiento"]."</span>";
        echo "<span>".$row["persona"]."</span>";
        echo "<span class='rigth'>".$row["muerte"]."</span>";
        echo "</div>";
    }
} else {
  echo "0 resultados";
}
mysqli_close($conn);
?>
No encuentro la solución para quitar los signos de interrogación, he buscado en este y otros foros pero todo lo que esta es muy poco concreto y farragoso o yo soy un poco torpe y no le veo la solución.
Un saludo afectuoso desde Sevilla
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por joel (1269 intervenciones) el 02/02/2021 19:09:45
Hola Manuel, que charset tienes puesto en la pagina web?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 86
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por Manuel (29 intervenciones) el 02/02/2021 19:48:59
Joel buenas noche:
No tengo ningún charset puesto ahora, pero he probado con varias formas y no he obtenido ningún resultado, lo que si tengo es el
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> que me gustaría saber si una vez que funcione con el utl8
este tiene que desaparecer de la página, de todas forma como te comento al principio le he probado al comienzo de la de la página, tambien antes del query y después del query y no me a funcionado.
Gracias de antemano y un saludo afectuoso desde Sevilla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por joel (1269 intervenciones) el 03/02/2021 08:04:29
el charset tiene que estar en la cabecera de la pagina web (<header>)

Si los datos que envías a la pagina web están en utf-8 y la pagina web en iso-8859-1 puede ser que se vean mal, ya que no entiende los caracteres utf-8.

Si utilizas html5 prueba a poner en la cabecera:
1
<meta charset="utf-8">
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 86
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por Manuel (29 intervenciones) el 04/02/2021 01:38:28
Hola buenas noche:
Utilizo html-4
he puesto la línea que me indicas y sigue sin mostrar los acentos
Un saludo afectuoso desde Sevilla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por joel (1269 intervenciones) el 04/02/2021 08:39:05
Si utilizas HTML4, has probado con?
1
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 86
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por Manuel (29 intervenciones) el 06/02/2021 19:12:01
Buenas tardes:
Ya he solucionado el problema continuación explico lo que he cambiado:
la página estaba en html4 he cambiado las cuatros primeras líneas para convertirla en html5:
1
2
3
4
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
luego después de conectarme a la base le incrusto a continuación esta línea
1
2
3
4
5
/* cambiar el juego de caracteres a utf8mb4 */
if (!mysqli_set_charset($conn, "utf8mb4")) {
    printf("Error loading character set utf8mb4: %s\n", mysqli_error($conn));
    exit();
}
y con estos cambios ya me muestra los acentos y las eñes en mi pagina.
Un saludo afectuoso desde Sevilla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de info
Val: 60
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por info (17 intervenciones) el 06/02/2021 20:30:09
Gracias por comentarlo Manuel!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por Jesús Canchala (1 intervención) el 23/06/2021 17:08:09
Gracias por tu aporte, solucioné el mismo problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por Raúl (2 intervenciones) el 05/04/2022 15:47:22
Excelente Manuel!!!!!!!, mil gracias!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por ronaldy (1 intervención) el 30/01/2023 01:12:14
Excelente aporte, pude solucionar por fin el mismo problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por Isaac RJ (2 intervenciones) el 27/04/2022 01:46:29
Hola amigos, excelente tarde, alguien que me pueda ayudar a explicarme como puedo hacer para actualizar un formulario cada vez que se termine cierta operación de manera automática?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por Santiago (1 intervención) el 03/03/2023 20:59:46
También cada campo que vayas a presentar en la página le puedes filtrar con la función utf8_encode($fila['nombre'])
seguro que te funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de victor

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por victor (6 intervenciones) el 15/03/2023 18:25:57
a tu variable conexion añade esto:

query("SET NAMES 'utf8'")

ejemplo:

$conn = mysqli_connect($servername, $username, $password, $dbname);
$conn ->query("SET NAMES 'utf8'");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Los acentos me salen como un rombo y dentro el signo de interrogación

Publicado por Victor (1 intervención) el 27/04/2023 22:51:17
Muchas gracias, tenia ese problema y con tu solucion quedo arreglado.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar