2009-12-15 9 views
6

Estoy tratando de generar información del producto almacenada en una base de datos MySQL, pero está escribiendo algunos caracteres extraños, como un diamante con un signo de interrogación dentro de él.Caracteres extraños de la base de datos PHP MySQL

Creo que puede ser un problema de codificación/UTF8, pero he especificado la codificación que quiero:

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

¿Es esto así? ¿Qué debo verificar?

+0

una publicar en phpadvent sobre el mismo problema de carácter extraño: http://phpadvent.org/2009/character-sets-by-paul-reinheimer – vsr

Respuesta

20

Si sólo los datos que viene de la base de datos tiene caracteres extraños en ella, asegúrese de que la conexión MySQL es también en UTF-8 mediante el uso de:

mysql_query("SET NAMES UTF8"); 

antes de cualquier tipo de duda. De lo contrario, si los caracteres aparecen también en archivos "escritos a mano", asegúrese de que los archivos se guarden como UTF-8 en su editor. También puede intentar establecer la cabecera juego de caracteres a través de PHP:

header('Content-type: text/html; charset=UTF-8'); 

También asegúrese de que todos los campos de las tablas se está consultando se establecen como alguna variante UTF-8, por ejemplo utf8_general_ci.

+0

Buena explicación, Tatu. – BenTheDesigner

+0

mysql_query ("SET NAMES UTF8"); trabajado para mi publicación de WordPress problema de extracción (signo de interrogación en un diamante). gracias – themerlinproject

4

La última vez que tuve ese problema, la solución fue similar a lo que dijo Tatu Ulmanen, pero un poco diferente ...

Así que si su solución hace no funciona, intente reemplazar

mysql_query("SET NAMES UTF8"); 

con

mysql_query("SET NAMES latin1"); 

Digo esto porque el juego de caracteres por defecto en MySQL es latin1, y eso es lo que se utiliza la mayor parte del tiempo ....

esperanza de que ayuda a ...

4

supongo que desea que el resultado sea en UTF8

  • ahorrar utf8 script PHP codificado
  • asegurarse de que su cabecera HTTP (o algunas etiquetas meta) dice que la producción es utf8
  • todas las tablas de MySQL debería ser utf8
  • último pero no menos importante, la conexión entre el cliente y el servidor debe ser utf8. (Esto podría ser manejado en algún lugar de la configuración de php.ini o al hacer la siguiente consulta contra la base de datos:. SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'

Si usted sigue los 4 puntos que deben nunca ningún problema con codificaciones rotos

Cuestiones relacionadas