Foros del Web » Programando para Internet » PHP »

Muy extraño problema con acentos

Estas en el tema de Muy extraño problema con acentos en el foro de PHP en Foros del Web. Hola, Este tema parece demasiado trillado, pero lo que me sucede a mi es muy extraño y no logré conseguir nada por Google ni el ...
  #1 (permalink)  
Antiguo 12/01/2012, 18:21
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 4 meses
Puntos: 11
Exclamación Muy extraño problema con acentos

Hola,

Este tema parece demasiado trillado, pero lo que me sucede a mi es muy extraño y no logré conseguir nada por Google ni el foro.

El problema es el siguiente:

Tengo un archivo PHP con código, cuando accedo a el directamente lo acentos se muestran correctamente, ahora bien, cuando hago include este archivo a otro (índex.php) que tiene
Código HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
en él, los acentos de ese archivo aparecen con un signo de interrogación.

El problema con el archivo se soluciona si quito la etiqueta meta que antes mencioné, pero los acentos de la página index.php se distorsionan.

El archivo que incluyo en el índex es este:

Código PHP:
<?php

require_once("funciones.php");

doDB();

$query "SELECT id, nombre FROM categorias ORDER BY nombre ASC";
$mysqli_mandato mysqli_query($mysqli$query);

while(
$contenido mysqli_fetch_array($mysqli_mandato)){

$id $contenido["id"];
$nombre $contenido['nombre'];
echo 
"<table id='menu'>";
echo 
"<tr><td><a href='categorias.php?id=".$id."'>$nombre</a></td></tr>";
echo 
"</table>";
}

?>
  #2 (permalink)  
Antiguo 12/01/2012, 18:41
 
Fecha de Ingreso: enero-2011
Ubicación: Argentina
Mensajes: 80
Antigüedad: 13 años, 3 meses
Puntos: 12
Respuesta: Muy extraño problema con acentos

A mi me pasó algo parecido una vez y lo solucioné con el editor Notepad++ lo que hice fue abrir el archivo PHP y en la pestaña Codificación le di clic a -> Convertir a UTF-8, guardé el archivo y, a mí se me solucionó el inconveniente así de fácil.

Ahora no sé si te estará pasando lo mismo.

Lo que me sucedió es que a veces uso el bloc de notas de Windows para programar algo sencillo y me lo guarda con otra codificación si me olvido de modificarlo.

Saludos
  #3 (permalink)  
Antiguo 12/01/2012, 18:47
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 4 meses
Puntos: 11
Respuesta: Muy extraño problema con acentos

Gracias, pero ese no parece ser el problema, todos los archivos están guardados en UTF-8.

Saludos
  #4 (permalink)  
Antiguo 12/01/2012, 19:03
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Muy extraño problema con acentos

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

POR ESTO

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

a mi me ha funcionado ¡Suerte!
  #5 (permalink)  
Antiguo 12/01/2012, 19:11
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 4 meses
Puntos: 11
Respuesta: Muy extraño problema con acentos

Cita:
Iniciado por Briss Ver Mensaje
Reemplaza <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

POR ESTO

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

a mi me ha funcionado ¡Suerte!
Así puedo ver los acentos de ese archivo que incluyo, pero los otros acentos en índex.php se distorsionan como: "Anónimo". Se soluciona un problema y aparece otro
  #6 (permalink)  
Antiguo 12/01/2012, 19:14
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 4 meses
Puntos: 11
Respuesta: Muy extraño problema con acentos

Aquí es donde incluyo el archivo por si con el me pueden ayudar mejor, gracias.

Código PHP:
Ver original
  1. <?php
  2. if(!isset($_GET['page'])) $title = "Fondos de pantalla";
  3. if($_GET['page'] == 1) $title = "Fondos de pantalla";
  4. if($_GET['page'] == 2) $title = "Fondos de escritorio";
  5. if($_GET['page'] == 3) $title = "Fondos gratis";
  6.  
  7. if(isset($_GET['id'])){
  8.  
  9. $query = "SELECT * FROM imagenes WHERE id = ".$_GET['id'];
  10. $mysqli_mandato = mysqli_query($mysqli, $query);
  11. $contenido = mysqli_fetch_array($mysqli_mandato);
  12.  
  13. $title = $contenido["nombre"];
  14.  
  15.  
  16. }
  17.  
  18. echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  19. <html xmlns="http://www.w3.org/1999/xhtml">
  20. <head>
  21. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  22. <link href="style.css" rel="stylesheet" type="text/css" />
  23. <title>'.$title.'</title>
  24. </head>
  25. <body>';
  26.  
  27. echo "<center><table border='0' id='web'>
  28. <tr><td id='logo'><img src='images/screen-128.png' /></td><td><h1>".$title."</h1></td></tr>
  29. <tr><td rowspan='2' id='layout'><br />";
  30. include("showcats.php");
  31. echo "Música";
  32. echo "</td></tr>
  33. <tr><td>";
  34.  
  35. ?>
  #7 (permalink)  
Antiguo 12/01/2012, 19:15
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Muy extraño problema con acentos

Cita:
Iniciado por ihmps Ver Mensaje
Así puedo ver los acentos de ese archivo que incluyo, pero los otros acentos en índex.php se distorsionan como: "Anónimo". Se soluciona un problema y aparece otro
Que tipo de Cotejamiento usas en tu BD????
  #8 (permalink)  
Antiguo 12/01/2012, 19:17
 
Fecha de Ingreso: enero-2011
Ubicación: Argentina
Mensajes: 80
Antigüedad: 13 años, 3 meses
Puntos: 12
Respuesta: Muy extraño problema con acentos

Intenta usando esta función

Código PHP:
Ver original
  1. // Conexión a la base de datos
  2. function db_connect(){
  3.     $conexion = mysql_connect("localhost", "", "");
  4.     mysql_query("SET NAMES 'utf8'");
  5.     mysql_select_db("") or die("No se pudo conectar a la base de datos");
  6.     return $conexion;
  7. }//Final de la función db_connect

o mysql_query("SET NAMES 'utf8'"); en donde tengas tu función

A ver que sucede.

Saludos
  #9 (permalink)  
Antiguo 12/01/2012, 19:18
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 4 meses
Puntos: 11
Respuesta: Muy extraño problema con acentos

Cita:
Iniciado por Briss Ver Mensaje
Que tipo de Cotejamiento usas en tu BD????
Uso latin1_swedish_ci ; este tampoco parece ser el problema porque extraigo y utilizo información de la base de datos en el índex y los acentos se muestran correctamente, el problema parece ser el include.

De hecho, la linea 31 que imprime "Música" como debe, pero la linea 30 no.
  #10 (permalink)  
Antiguo 12/01/2012, 19:23
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 4 meses
Puntos: 11
Respuesta: Muy extraño problema con acentos

Cita:
Iniciado por MaxDgy Ver Mensaje
Intenta usando esta función

Código PHP:
Ver original
  1. // Conexión a la base de datos
  2. function db_connect(){
  3.     $conexion = mysql_connect("localhost", "", "");
  4.     mysql_query("SET NAMES 'utf8'");
  5.     mysql_select_db("") or die("No se pudo conectar a la base de datos");
  6.     return $conexion;
  7. }//Final de la función db_connect

o mysql_query("SET NAMES 'utf8'"); en donde tengas tu función

A ver que sucede.

Saludos
Gracias, pero no funcionó. Cuando accedo directamente a él los acentos se muestran, eso no pasa cuando le hago include.
  #11 (permalink)  
Antiguo 12/01/2012, 19:27
 
Fecha de Ingreso: enero-2011
Ubicación: Argentina
Mensajes: 80
Antigüedad: 13 años, 3 meses
Puntos: 12
Respuesta: Muy extraño problema con acentos

Ah! Yo te puse un ejemplo de mysql y tú estás usando mysqli

EDITO: Me rindo. SUERTE!!
  #12 (permalink)  
Antiguo 12/01/2012, 19:30
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 4 meses
Puntos: 11
Respuesta: Muy extraño problema con acentos

Gracias por la ayuda.

A los que me quieran ayudar aún sigo sin solucionar el problema.
  #13 (permalink)  
Antiguo 12/01/2012, 19:42
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 4 meses
Puntos: 11
Respuesta: Muy extraño problema con acentos

Algo curioso, si accedo a showcats.php que contiene:
Código PHP:
<?php

require_once("funciones.php");

doDB();
$query "SELECT id, nombre FROM categorias ORDER BY nombre ASC";
$mysqli_mandato mysqli_query($mysqli$query);

while(
$contenido mysqli_fetch_array($mysqli_mandato)){

$id $contenido["id"];
$nombre $contenido['nombre'];
echo 
"<table id='menu'>";
echo 
"<tr><td><a href='categorias.php?id=".$id."'>$nombre</a></td></tr>";
echo 
"</table>";
}

?>
Se muestran los acentos, pero si le agrego la linea
Código PHP:
header'Content-Type: text/html;charset=utf-8' ); 
las letras que tienen tildes se muestran con "?". Si agrego
Código PHP:
 header'Content-Type: text/html;charset=ISO-8859-1' );? 
Funciona nuevamente, lo malo es que no puedo dejar el header porque me sale el error de que le envié datos al usuario antes de ejecutar el header, sin mencionar que si lo hago se distorsionará el resto del contenido.
  #14 (permalink)  
Antiguo 12/01/2012, 19:55
 
Fecha de Ingreso: enero-2011
Ubicación: Argentina
Mensajes: 80
Antigüedad: 13 años, 3 meses
Puntos: 12
Respuesta: Muy extraño problema con acentos

Cita:
Iniciado por ihmps Ver Mensaje
Uso latin1_swedish_ci ; este tampoco parece ser el problema porque extraigo y utilizo información de la base de datos en el índex y los acentos se muestran correctamente, el problema parece ser el include.

De hecho, la linea 31 que imprime "Música" como debe, pero la linea 30 no.

Recién me rendí pero creo que deberías probar cambiar latin1_swedish_ci por utf8_general_ci o utf8_spanish_ci sólo para probar que sucede y si no te funciona lo vuelves a pasar a latin1_swedish_ci

Ahora sí, ese fue mi última opinión.

Saludos
  #15 (permalink)  
Antiguo 12/01/2012, 20:01
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 4 meses
Puntos: 11
Respuesta: Muy extraño problema con acentos

Jeje, gracias, pero no funciono ni utf8_general_ci ni utf8_spanish_ci... esto me esta mortificando la vida...
  #16 (permalink)  
Antiguo 12/01/2012, 21:10
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 4 meses
Puntos: 11
Respuesta: Muy extraño problema con acentos

Al fin encontre la solución; aquí esta por si alguien le hace falta alguna vez:

Código PHP:
<?php

require_once("funciones.php");

doDB();

$query "SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'";
$mysqli_mandato mysqli_query($mysqli$query);

$query "SELECT id, nombre FROM categorias ORDER BY nombre ASC";
$mysqli_mandato mysqli_query($mysqli$query);


while(
$contenido mysqli_fetch_array($mysqli_mandato)){

$id $contenido["id"];
$nombre $contenido['nombre'];
echo 
"<table id='menu'>";
echo 
"<tr><td><a href='categorias.php?id=".$id."'>$nombre</a></td></tr>";
echo 
"</table>";
}

?>

Etiquetas: acentos, extraño, html, mysql, sql
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 15:03.