Foros del Web » Programando para Internet » PHP »

Problema UTF8 en php y MySQL

Estas en el tema de Problema UTF8 en php y MySQL en el foro de PHP en Foros del Web. Hola a todos. Vereis tengo una pagina php que obtiene registros de una BD MySQL y los muestra en pantalla. Las paginas php tienen codificacion ...
  #1 (permalink)  
Antiguo 02/03/2010, 12:15
Avatar de mdromed  
Fecha de Ingreso: septiembre-2009
Mensajes: 389
Antigüedad: 14 años, 7 meses
Puntos: 8
Problema UTF8 en php y MySQL

Hola a todos.
Vereis tengo una pagina php que obtiene registros de una BD MySQL y los muestra en pantalla.

Las paginas php tienen codificacion "UTF-8" y muestran bien todos los acentos y las ñ que yo pongo en el codigo fuente.
Pero si el valor con acento, por ejemplo, lo lee de la base de datos lo muestra mal:
"P�blico" en lugar de "Público" ok?

Lo raro es que el campo de la tabla tiene:
- Column Charset: utf8
- Column Collate: utf8_general_ci

deberia mostrarlo bien, no?
¿Es problema del php o de mysql? Lo digo pq el valor se guarda bien con el acento en la base de datos pero cuando lo intento mostrar en php no se ve bien.

Ya se que existe la funcion utfencode pero si la pagina, la tabla y los campos tienen codificacion UTF8 ¿Por qué no lo muestra bien sin usar utfencode????

Es muy raro no?
Por cierto, ademas de "utf8_general_ci" tambien he probado con "utf8_unicode" y con "utf8_spanish_ci" y tampoco funciona.

¿QUE PUEDO HACER?
Gracias.
  #2 (permalink)  
Antiguo 02/03/2010, 13:08
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: Problema UTF8 en php y MySQL

yo tambien tuve un problema parecido hace poco y nada funciono, lo que hice al final fue un str_replace jaja solo eso logro sacar el problema.

espero que esta funcion te ayude un poco.

http://docs.php.net/manual/es/functi...tion-table.php
  #3 (permalink)  
Antiguo 02/03/2010, 17:10
Avatar de mdromed  
Fecha de Ingreso: septiembre-2009
Mensajes: 389
Antigüedad: 14 años, 7 meses
Puntos: 8
Respuesta: Problema UTF8 en php y MySQL

Cita:
Iniciado por enlinea777 Ver Mensaje
yo tambien tuve un problema parecido hace poco y nada funciono, lo que hice al final fue un str_replace jaja solo eso logro sacar el problema.

espero que esta funcion te ayude un poco.

http://docs.php.net/manual/es/functi...tion-table.php
Te agradezco la respuesta.
Yo sé que con "utf8_encode" se arregla pero deberia funcionar si usar esta funcion.
A ver alguna otra auyda por favor!
  #4 (permalink)  
Antiguo 03/03/2010, 08:37
Avatar de mdromed  
Fecha de Ingreso: septiembre-2009
Mensajes: 389
Antigüedad: 14 años, 7 meses
Puntos: 8
Respuesta: Problema UTF8 en php y MySQL

Ya me funciona.
Simplemente hay que añadir esta linea antes de hacer el "mysql_query":

mysql_query("set names utf8");


Gracias a todos!

Última edición por mdromed; 03/03/2010 a las 09:33
  #5 (permalink)  
Antiguo 17/05/2010, 19:56
 
Fecha de Ingreso: junio-2009
Mensajes: 231
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Problema UTF8 en php y MySQL

GRACIAS GROSOOO

Me viniste re bien macho con el ultimo aporte

gracias de verdad
  #6 (permalink)  
Antiguo 18/07/2010, 08:55
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Problema UTF8 en php y MySQL

Hola.

alguna solucion para realizar directamente sobre el servidor MySQL?

Adicional a esa solución esta el usar iconv('DESDE','HACIA',$string)...

Pero son soluciónes de SCRIPT

Algo para efectuar sobreMYSQL ?

...piensen en una web con mil o dosmil *.php...

  #7 (permalink)  
Antiguo 18/07/2010, 09:42
Avatar de mdromed  
Fecha de Ingreso: septiembre-2009
Mensajes: 389
Antigüedad: 14 años, 7 meses
Puntos: 8
Respuesta: Problema UTF8 en php y MySQL

NI idea lo siento tio!
Se supone que con establecer la codificacion de la BD de Mysql a UTF-8 deberia funcionar pero no es asi.
  #8 (permalink)  
Antiguo 18/07/2010, 09:52
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Problema UTF8 en php y MySQL

Esta es una tercer solucion:

MYSQL_QUERY("SET NAMES 'utf8'");

Sin embargo requiero una solución desde MYSQL, no desde el SCRIPT.

Algun comentario plis...
  #9 (permalink)  
Antiguo 30/12/2013, 17:09
 
Fecha de Ingreso: marzo-2013
Mensajes: 11
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Problema UTF8 en php y MySQL

Como dijo mdromed:
con "SET NAMES UTF8" aseguras que cada que se realice una conexión entre PHP y MySQL los datos
se envían con utf-8
A mi me funciona tenerlo en la conexión (estoy utilizando mysqli en lugar de mysql_):

Código PHP:
Ver original
  1. <?php
  2.   date_default_timezone_set('America/Mexico_City');
  3.   $conexion = new mysqli("127.0.0.1", "root","", "$proyecto");
  4.   $conexion->query("SET NAMES UTF8");
  5.   $conexion->query("SET CHARACTER SET utf8");
  6. ?>

y en la BD todo está como utf8_general_ci

saludos
  #10 (permalink)  
Antiguo 31/12/2013, 05:25
Avatar de TSG
TSG
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 373
Antigüedad: 10 años, 7 meses
Puntos: 9
Respuesta: Problema UTF8 en php y MySQL

Prueba a cuándo saques el valor a hacer esto:

Código PHP:
Ver original
  1. htmlentities($variable, null, '8859-1')

Saludos.
  #11 (permalink)  
Antiguo 31/12/2013, 07:39
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: Problema UTF8 en php y MySQL

Para todos


recuerden que la codificacion tambien depende del editor de textos para hacer los php, la codificacion de la pagina:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
o
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
y por ultimo, tambien de la base de datos y como extraes la informacion
mysql_query("set names utf8");

Etiquetas: codificacion, mysql, utf-8
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 09:35.