Foros del Web » Programando para Internet » PHP »

mysql guarda bien acentos y ñ pero en php los muestra mal

Estas en el tema de mysql guarda bien acentos y ñ pero en php los muestra mal en el foro de PHP en Foros del Web. Buenas Tarades He buscado y e revisado y nada siempre me muestra los caracteres especiales mal, en la parte de la base de datos ya ...
  #1 (permalink)  
Antiguo 14/04/2015, 14:56
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
mysql guarda bien acentos y ñ pero en php los muestra mal

Buenas Tarades

He buscado y e revisado y nada siempre me muestra los caracteres especiales mal, en la parte de la base de datos ya se guardan bien las tildes y eñes, y cuando imprimo en php muestra caracteres esteciales

en todos mis html
Código HTML:
Ver original
  1. <meta http-equiv="content-type" content="text/html; charset=utf-8" />

en todas las consultas que realizo
Código PHP:
Ver original
  1. utf8_decode($rowsOfer['nombreOferta'])

y en la base de datos el cotejamiento ensta en utf8_general_ci

pero en troda mi pagina lo sigues mostrando mal, ayuda por fa
  #2 (permalink)  
Antiguo 14/04/2015, 15:15
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

Al estar las tablas de mysql como UTF8 y el charset de html tambien, no es necesario usar utf8_decode.
Lo que si que te aconsejo es que le digas a mysql que use la codificacion UTF8 con
Cita:
mysql_query("SET NAMES 'utf8'");
Esto ponlo justo despues de mysql_connect para que tenga efecto en todas las consultas.
Pruebalo y comenta si tienes problemas
__________________
http://www.roglastudios.es
  #3 (permalink)  
Antiguo 14/04/2015, 15:26
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

pero es que yo estoy utilizando mysqli, yo lo tengo asi

Código PHP:
Ver original
  1. $con = mysqli_connect($Servidor, $UserBd, $Pass, $BaseDatos) or die("Error al tratar de conectarce a la BD " . mysqli_error());

y creo que en mysqli no funciona asi
  #4 (permalink)  
Antiguo 14/04/2015, 15:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

Cita:
Iniciado por JeMaGa Ver Mensaje
pero es que yo estoy utilizando mysqli, [...] y creo que en mysqli no funciona asi
Bueno, obviamente ambas funciones no son idénticas, pero al menos deberías deducir que debes ejecutar una consulta de SQL:
Cita:
SET NAMES 'utf8'
¿O qué parte no entiendes?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 14/04/2015, 15:56
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

es que no funciona SET NAMES 'utf8', me sigue mostrando mala los caracteres especiales, no se como mas lo puedo solucionar, ya le quite lo que me dijiste utf8_decode, por que las tablas las tienen,

pero no se que hacer, de que otra forma lo pudo solucionar
  #6 (permalink)  
Antiguo 14/04/2015, 16:03
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

MySQL es la API historica de conexion a mysql
MySQLi es la nueva orientada a objetos
PDO tambien estaria disponible, aunque no te la recomiendo por el rendimiento.

Al final lo que hacen es ejecutar sentencias SLQ sobre MySQL, da igual el driver que uses para conectarte a tu DB, la cuestion es decirle a tu base de datos de forma explicita que tipo de codificacion vas a usar en tus sentencias SQL
__________________
http://www.roglastudios.es
  #7 (permalink)  
Antiguo 14/04/2015, 16:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

Cita:
Iniciado por JeMaGa Ver Mensaje
es que no funciona SET NAMES 'utf8', me sigue mostrando mala los caracteres especiales, no se como mas lo puedo solucionar, ya le quite lo que me dijiste utf8_decode, por que las tablas las tienen,

pero no se que hacer, de que otra forma lo pudo solucionar
El tema es que los datos que ya tienes en la BD no se corregirán por arte de magia, si los insertaste antes de ajustar la codificación no surtirá efecto: tienes que actualizar los datos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 14/04/2015, 16:19
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

Como te esta diciendo pateketrueke los datos ya existentes los tendras que modificar de alguna manera.
Respecto a lo de MyQLI te pongo como deberia de usarse set names
Código PHP:
Ver original
  1. $mysqli = new mysqli('localhost', 'user', 'pass', 'db');
  2. /** comprobacion de la conexion */
  3.     printf("Fallo en la conexion: %s\n", mysqli_connect_error());
  4.     exit();
  5. }
  6. /** cambio del juego de caracteres a utf8 */
  7. if (!$mysqli->set_charset("utf8")) {
  8.     printf("Error cambiando el juego de caracteres utf8: %s\n", $mysqli->error);
  9. } else {
  10.     printf("Juego de caracteres actual: %s\n", $mysqli->character_set_name());
  11. }
  12.  
  13. $mysqli->close();
__________________
http://www.roglastudios.es
  #9 (permalink)  
Antiguo 19/11/2015, 03:25
 
Fecha de Ingreso: noviembre-2015
Mensajes: 1
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

mysqli_query ($link,"SET NAMES 'utf8'");

Asi lo he hecho yo en mi aplicacion web y me ha funcionado, no me salia bien el caracter del €.
Eso lo pone antes del query SELECT.
Un saludo y suerte
  #10 (permalink)  
Antiguo 19/11/2015, 07:30
Avatar de agusax  
Fecha de Ingreso: junio-2011
Ubicación: Puerto Real (Cádiz)
Mensajes: 74
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

Para guardar los valores en la BD, uso en php la instrucción encode y cuando lo muestro, la instrucción decode.
Miralo en PHP.net


Ejemplos:
utf8_encode($titulo) //codifica el texto para despues insertarlo
utf8_decode($titulo) //decodifica el texto


Eso sí, en la BD verás símbolos extraños
  #11 (permalink)  
Antiguo 15/01/2016, 15:44
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 9 años, 11 meses
Puntos: 1
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

Buenas,
Lo tengo montado como indicas, con utf8_encode y utf8_decode.
Me funciona bien la insercción y extración vía web. Pero como indicas en la BD se garda con carácteres extraños.
¿Alguna forma de solucionarlo o no tiene importancia?
Gracias.
  #12 (permalink)  
Antiguo 15/01/2016, 15:54
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

mysqli_set_charset('utf8');
  #13 (permalink)  
Antiguo 15/01/2016, 16:07
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 10 meses
Puntos: 11
Respuesta: mysql guarda bien acentos y ñ pero en php los muestra fal

Prueba con esto:

Código PHP:
mysqli_set_charset($conexion,'utf8'); 
$conexion es la variable a la cual asignas la conexion.

Etiquetas: acentos, html, muestra, mysql
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 14:42.