problemas caracteres especiales en php y mysql

Hola.

Estoy teniendo problemas al guardar caracteres con acents y dieresis en mysql. Php envia los caracteres en forma correcta, pero al hacer una consulta parecen caracteres extraños.

La tabla (y los campos) estan en utf-8 tambien uso mysql_real_escape_string() antes del insert y htmlentities() para mostrar los datos.

Cualquier ayuda u orientacion se agradece de antemano.

Tags: ,


2 votes, average: 4.50 out of 52 votes, average: 4.50 out of 52 votes, average: 4.50 out of 52 votes, average: 4.50 out of 52 votes, average: 4.50 out of 5 (2 votes, average: 4.50 out of 5)
You need to be a registered member to rate this post.
Loading...
Bases de Datos, Pregúntale al gurú, Programacion | RSS 2.0 |     4,459 views

RSS feed

6 Comments »

Comment by psyrax
2008-12-28 20:25:12

Checa el encodig de tu database
yo tube algo a si pero use htmlentities() y strreplace()

 
Comment by chaoslord
2008-12-28 21:46:37

Podría afectar la codificación en que este el archivo .php??

el encodig del archivoes ASCII

La tabla y los campos estan en utf-8

los datos guardados son:
ñÑ
äëïöü
áéíóú
âêîôû

cuando deberían ser
ñÑ
äëïöü
áéíóú
âêîôû

 
Comment by ciberperro
2008-12-29 20:44:46

Toda la codificación debe coincidir (recomiendo usar UTF-8):

1) Codificación del archivo PHP, revisa que sea la correcta y modifícala si es necesario con el comando “iconv” (revisa el man)
2) El HTML que generas debe tener sus headers correctos y el meta de encoding debe ser correcto a UTF-8 ejemplo:


Si usas XHTML como salida, es recomendable usar:

3) Los archivos y bases de datos que se usen en tu script o aplicación deben estar de preferencia en UTF-8 para evitar convertirlos en tiempo de ejecución, de lo contrario requeriras codificarlos y/o decodificarlos con php utf8_encode y utf8_encode al desplegarlos y/o capturarlos según el caso.

4) revisa que tus conexiones a bases de datos negocien la codificación correcta, eso puede ayudar también.

5) Si usas apache, te puede ayudar también utilizar un .htacces con la directiva específica para codificación:

AddType 'text/html; charset=UTF-8' html

El chiste es ser congruentes todo el tiempo con la codificación utilizada. Inclusive tu shell debe estar ajustado a una codificación que te convenga, ya que si programas con UTF-8 y tu shell (o tu “vi”) usa ISO-8859-1 entonces al editar tus archivos (o al ejecutarlos) verás carácteres extraños y tendras que usar iconv para ajustar tus archivos una vez que los pongas en producción. Si usas “vi” de un archivo en utf8 dentro de un shell ISO8859-1 y de pronto notas caracteres escapados en tu texto puedes probar seteando la variable de ambiente LANG, ejemplo:


LANG=en_US.UTF-8 vi miarchivo

Juega con tus posibilidades y ojo con la codificación… siempre.

Comment by ciberperro
2008-12-29 20:50:01

demonios!!!! esta cosa no me respeto los tags de código, va de nuez para el punto 2 que debió poner algo así:

2) El HTML que generas debe tener sus headers correctos y el meta de encoding debe ser correcto a UTF-8 ejemplo:

meta content="text/html; charset=UTF-8" http-equiv="content-type"

Si usas XHTML como salida, es recomendable usar:

xml version="1.0" encoding="UTF-8"

recuerda completar los tags del meta y del header de xml, con un carajo esta cosa debería respetar el tag code, o de plano no sé usar wordpress…

 
Comment by mahomedalid
2008-12-30 02:47:24

Exacto, también el encoding de tu BD y las tablas deben coincidir. Busca en el manual de MySQL la sección que habla de COLLATE.

Para las bases de todo este rollo este artículo es buenisimo:

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) by Joel Spolsky

[http://www.joelonsoftware.com/articles/Unicode.html]

 
 
Comment by splityo
2008-12-29 22:26:28

Antes de hacer un select, ejecuta un query “SET NAMES UTF8” para que te devuelva correctamente los caracteres.
Mi recomendación es que en tu bootstrap, el primer query después de establecer la conexión sea ese.

Saludos

 
Name (required)
E-mail (required - never shown publicly)
URI
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> in your comment.

Trackback responses to this post