2

Muchas gracias por acceder a mi post.
El problema con las tildes es que al mostrar la información de la base de datos en la página, los tildes aparecen con éste símbolo: .
Tengo en mi Index:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    ...
</head>

Imprimo el texto:

<?php
  include("php/conexion.php");
  while($v = mysqli_fetch_array($resultado)){
?>
<div id="modal<?php echo $v['id'] ?>" class="modal">
 <div class="modal-content info-modal">
  <img class="info-img" src="<?php echo $v['img'] ?>">
  <h3 class="info-title"><?php utf8_decode($v['titulo']) ?></h3>
  ...
<?php
  }
?>

En la base de datos mediante PhpMyAdmin configure la BD, la tabla y las columnas en cotejamiento: utf8_general_ci. ¿Cual es el problema? Muchas gracias!

Gabriel Benitez
  • 115
  • 1
  • 2
  • 14
  • ¿De que manera "imprimes" los textos? podrias editar la pregunta para mostrarlo. – Rafael Bautista Jan 25 '18 at 03:16
  • Ahi edite el tema para que veas. – Gabriel Benitez Jan 25 '18 at 03:53
  • lo solucione imprimiendo los datos con utf8_encode(), tiene alguna desventaja esto o está bien? – Gabriel Benitez Jan 25 '18 at 03:59
  • Sí, tiene la desventaja de que te puedes pasar la vida aplicando funciones a los datos, cuando lo que tienes que hacer es **resolver el problema de raíz**, determinando primero a que nivel se encuentra. **Usar `utf8_encode` es una solución a medio camino y más costosa que trabajar en un entorno bien configurado**. **[Aquí está todo explicado con detalle](https://es.stackoverflow.com/a/59510/29967)**. – A. Cedano Jan 25 '18 at 04:12

3 Answers3

4

Si todo esta configurado de manera correcta, el error debe estar al guardar el archivo, a veces codificar el archivo de un archivo guardado con una codificación distinta y al cambiar su codificación nuevamente suele fallar. (Esto me ha sucedido)

La primera recomendación es que crees un nuevo archivo en blanco con una codificación de UTF-8 sin BOM, y pegues en el, el código del antiguo archivo y lo guardes.

Yo vengo trabajando desde hace mucho tiempo con dos cotejamiento utf8_spanish_ci y utf8_spanish2_ci sin haber tenido algún error de caracteres imprimidos en simbolización �.

Otro detalle de tener siempre en cuenta es de cómo llamas los datos de la consulta, en la conexión de la base de datos debes agregar también utf8 usando set_charset MySQLi

//cambiar el conjunto de caracteres a utf8 
if(!$conexion->set_charset("utf8")){
  printf("Error cargando el conjunto de caracteres utf8: %\n", $conexion->error);
  exit();
}

No es que este mal el uso de utf8_encode pero vas a tener que depender siempre de él, cuando el error se puede solucionar de raíz.

Otra manera de solucionar estos tipos de simbolización � es usando ISO-8859-1 (juego de caracteres)

<?php
    header('Content-Type: text/html; charset=ISO-8859-1');
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Untitled Document</title>
    </head>
    <body>
        àè ó ñ 
    </body>
</html>

He realizado pruebas, sin utilizar ningún editor de texto profesional, solo he usado el bloc de notas de windows, funciona sin problemas.

Si aún prefieres seguir usando este método

$test = utf8_encode("ñàèóñ");
echo utf8_decode($test); 
Publisere.com
  • 2,384
  • 5
  • 14
1

Necesitas convertir la codificación del texto dentro de PHP usando la función utf8_encode() al hacer un echo cuando existe texto con caracteres especiales desde la BD ejemplo:

echo utf8_encode($texto_de_la_db);

Mas info: utf8_encode PHP

Rafael Bautista
  • 2,603
  • 6
  • 20
  • 35
0

Dependiendo de la configuración del editor utilizado puede que añada de forma predeterminada el BOM a los ficheros UTF-8. Esto pasa principalmente en aplicaciones Windows que al ejecutarlas en sistemas Linux suelen interferir con el proceso normal de éstas, por ejemplo, en PHP comenzando a enviar el BOM al navegador, y evitando que las cabeceras se especifiquen correctamente.

Simplemente deberemos editar el fichero con un editor de texto que nos permita el cambio de configuración y guardaremos este con formato UTF-8 sin BOM. Editores como Dreamweaver, Zend Studio o el editor gratuito Notepad++ permiten esta operación.

Más info: https://www.w3.org/International/questions/qa-utf8-bom.es.php

Hoose
  • 2,993
  • 5
  • 22
  • 52