3

Estoy haciendo que PHP, configurado en default_charset=UTF-8, ponga datos traídos de la base de datos MySQL, también configurada con todas las variables character y collation en UTF-8, dentro de un elemento select, pero no codifica correctamente los caracteres con tildes, como se ve en esta imagen:

introducir la descripción de la imagen aquí

El problema está en que todo lo que PHP imprime que no tiene que ver con datos desde MySQL sí se imprime correctamente codificado. Asimismo los datos de la base están bien guardados con sus acentos y demás.

Cuando uso la función utf8_encode el problema se soluciona. Pero todos sabemos lo desgastante que es invocar la función para cada variable. Y aún más cuando no es necesario sabiendo que Apache Tomcat, PHP, y MariaDB están todos configurados en UTF-8, así que no entiendo.

Muchas gracias por su colaboración!

NicoleJuli
  • 116
  • 9
  • 2
    Ese problema ya tiene respuesta aquí: [� Caracter inspector aparece en algunos datos obtenidos de la BBDD](https://es.stackoverflow.com/a/59510/29967) Verifica las soluciones planteadas en el orden **del 1 al 4** y si no funciona comenta. Según lo que dices es posible que no estás estableciendo el charset a UTF8 cuando haces la conexión. Saludos. – A. Cedano Apr 28 '17 at 20:52
  • MUCHAS GRACIAS! EFECTIVAMENTE LA SOLUCIÓN DEL PROBLEMA FUE USAR **set_charset('utf8')** – NicoleJuli May 02 '17 at 15:12
  • En ese caso puedes valorar [la respuesta aceptada](https://es.stackoverflow.com/a/59510/29967) con un voto a favor. Saludos. – A. Cedano May 02 '17 at 15:14

2 Answers2

0

Este código le dice a MySQL que debe usar UTF-8 para "interpretar" correctamente los caracteres unicode.

$Conexion   = @new mysqli($Server,$User,$Password,$dBase,3306);
if (mysqli_connect_errno()) {
    echo "Error al conectar";
    exit();
}else{
    $SQL = "set names 'utf8';";
    $Resultado = $Conexion->query($SQL);
}

Recuerda que tu archivo PHP debe tener el formato UTF-8 o UTF-8 sin BOM, si está en ANSI, probablemente el problema continúe. Y si tu página tiene cabeceras HTML, entonces en el head usa <meta charset="utf-8">

Jorny
  • 604
  • 1
  • 7
  • 27
0

Supongo que esos resultados lo imprimes en un documento HTML por que no pruebas colocando el meta en la cabecera puede que funcione no estoy seguro

<head>
  <meta charset="UTF-8">
</head>
Dacosta
  • 164
  • 4