Foros del Web » Programando para Internet » PHP »

Recuperar string de la base de datos y que se RESPETEN los caracteres UTF-8

Estas en el tema de Recuperar string de la base de datos y que se RESPETEN los caracteres UTF-8 en el foro de PHP en Foros del Web. Amigos. Mi documento esta bien establecito con su debida cabecera que especifica los caracteres como UTF-8 Si coloco directamente en el archivo php la cadena ...
  #1 (permalink)  
Antiguo 31/03/2015, 16:58
Avatar de ZoroRoronoa  
Fecha de Ingreso: marzo-2011
Ubicación: California, USA
Mensajes: 824
Antigüedad: 13 años, 1 mes
Puntos: 116
Recuperar string de la base de datos y que se RESPETEN los caracteres UTF-8

Amigos.

Mi documento esta bien establecito con su debida cabecera que especifica los caracteres como UTF-8

Si coloco directamente en el archivo php la cadena

Año, y algo más.
Se me muestra bien.

Ahora result que tengo cadenas guardadas en la base de datos, y DENTRO DE LA BASE DE DATOS, tambien se muestran bien.

El problema es cuando hago la consulta (query), y los imprimo, me muestra los caracteres como raros.

Alguna solucion a ello, no lo he logrado, ya tengo rato batallando :/

Saludos y Gracias de antemano.
__________________
Programador jQuery & PHP
  #2 (permalink)  
Antiguo 31/03/2015, 17:04
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Recuperar string de la base de datos y que se RESPETEN los caracteres UTF-

Prueba añadiendo AddDefaultCharset UTF-8 en el .htaccess.
__________________
¿Te sirvió la respuesta? Deja un +1
  #3 (permalink)  
Antiguo 31/03/2015, 17:21
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Recuperar string de la base de datos y que se RESPETEN los caracteres UTF-

Prueba htmlentities(), suponiendo que tu base de datos tiene utf8 o lo has convertido.
esto te convierte para enviarlo al navegador.
  #4 (permalink)  
Antiguo 01/04/2015, 13:12
Avatar de ZoroRoronoa  
Fecha de Ingreso: marzo-2011
Ubicación: California, USA
Mensajes: 824
Antigüedad: 13 años, 1 mes
Puntos: 116
Respuesta: Recuperar string de la base de datos y que se RESPETEN los caracteres UTF-

Cita:
Iniciado por orodrf Ver Mensaje
Prueba htmlentities(), suponiendo que tu base de datos tiene utf8 o lo has convertido.
esto te convierte para enviarlo al navegador.
Ese no es el problema, ya que los saltos de linea y todas las etiquetas HTML, me van bien.

El problema que tengo con con los ácéntós y las eñes.

Me salen simbolitos como estos:
ácéntós y las eñes.
�c�nt�s y las e�es.

Pero si entro a la base con PHPadmin, se ven correctamente los caracteres.

ADEMAS AGREGO, QUE POR SI LAS DUDAS, YA INTENTE usar eso de htmlentities y nada.

Saludos.
__________________
Programador jQuery & PHP
  #5 (permalink)  
Antiguo 01/04/2015, 13:38
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Recuperar string de la base de datos y que se RESPETEN los caracteres UTF-

Pues precisamente eso, htmlentities( "áÑñ" ) te lo convierte a áÑñ que son codigos que tu navegador interpreta correctamente ahora, si te sigue mostrando mal quizas tu cadena almacenada no este en utf8, recuerda que la base de datos se codifica en una pagina y tambien cada campo string la puedes codificar en una pagina de codigos diferente (al menos en mysql), quizas la cadena que intentas mostrar lo has ingresado por un medio externo es decir no atravez de un formulario en uft8.
  #6 (permalink)  
Antiguo 01/04/2015, 13:46
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Recuperar string de la base de datos y que se RESPETEN los caracteres UTF-

Aqui se habla del tema: http://www.phptherightway.com/#php_and_utf8
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #7 (permalink)  
Antiguo 01/04/2015, 13:55
Avatar de Jilti  
Fecha de Ingreso: abril-2007
Mensajes: 47
Antigüedad: 17 años
Puntos: 4
Respuesta: Recuperar string de la base de datos y que se RESPETEN los caracteres UTF-

Saludos... Prueba en vez de utf8

Código:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  #8 (permalink)  
Antiguo 02/04/2015, 12:26
Avatar de ZoroRoronoa  
Fecha de Ingreso: marzo-2011
Ubicación: California, USA
Mensajes: 824
Antigüedad: 13 años, 1 mes
Puntos: 116
Respuesta: Recuperar string de la base de datos y que se RESPETEN los caracteres UTF-

El problema era el siguiente.

Si el usuario enviaba carateres especiales, sobre todo de inyeccion SQL y XSS, como las comillas
" ", o los mayorQue menorQue > <, esta era mi preocupacion.

Asi que decidi escapar estos caracteres mediante la funcion htmlspecialchars ( COMO ES OBVIO ), pero los ácentos y las eñes, me estaban
Matando.

AHORA, SIN NECESIDAD DE CONVERTIR los caracteres con acentos y eñes, prodeci a guardarlos normalmente.
Como si fueran cualquier caracter ordinario.

Y el problema venia a la hora de extraer los datos con el SELECT.

Esto lo resolvi colocando despues de abrir mi conexion, la siguiente linea.
mysqli_query($con, "SET NAMES 'utf8'");
Código PHP:
Ver original
  1. mysqli_query($con, "SET NAMES 'utf8'");

Un saludo y Gracias a todos por su ayuda.
__________________
Programador jQuery & PHP
  #9 (permalink)  
Antiguo 02/04/2015, 23:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Recuperar string de la base de datos y que se RESPETEN los caracteres UTF-

Cita:
Si el usuario enviaba carateres especiales, sobre todo de inyeccion SQL y XSS, como las comillas
" ", o los mayorQue menorQue > <, esta era mi preocupacion.
Es una preocupación bastante mal enfocada.

Lo correcto es dejar intactos los datos.

¿Por qué?

1. SQL

Porque una inyección de SQL no se ejecutará jamás por sí misma, sólo ocurre si no preparas las consultas, así que si armas tus consultas de SQL a mano ahí está el problema.

Por eso debes escapar las consultas, usando PDO por ejemplo, pero jamás alterando la información original: ese es un error bastante común pensar así.

2. XSS

De igual forma, una inyección de XSS jamás se ejecutará por sí misma, sólo ocurre si imprimes la información directamente al documento, sin precaución alguna y sin escapar apropiadamente dicho HTML en caso de permitirlo.

Por eso debes, o bien, eliminar todo el HTML al recibir la información (en caso de limitarlo) o bien, filtrarlo adecuadamente antes de guardar: jamás debes alterar la naturaleza original de la información.

Porque además, ¿sabes qué?

La función htmlspecialchars() termina incrementando la cantidad de caracteres necesarios para preservar información en la base de datos ¡de manera inútil!

Una inyección de SQL jamás ocurrirá si preparas tus consultas, así como algo de HTML+XSS no hace daño en la base de datos.

Sólo hay que preocuparse de él al momento de enviarlo al navegador, así como al momento de ejecutar las consultas.

Lo del césar al césar pues, no inventes técnicas innecesarias.

Así que no le veo lo "obvio" lo que planteas.

Estás mal, muy mal.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: caracteres, string, 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 17:59.