Los caracteres especiales se deforman en la inserción de la base de datos
Frecuentes
Visto 172 equipos
0
Estoy usando UTF-8 en mi HTML y configuré la intercalación de la tabla de mi base de datos en UTF-8 Unicode. Los datos que estoy guardando provienen de una fuente externa, pero al verlos en el sitio web (en UTF-8) funcionan bien.
Ahora, cuando almaceno los valores de php usando una consulta de inserción, los valores como 'Bearwölf' se deforman a 'Bearwölf'.
¿Cómo soluciono esto? No creo que haya muchos más detalles que proporcionar, si se te ocurre algo, házmelo saber.
1 Respuestas
0
Cambió la API para dar cadenas codificadas en utf 8, problema resuelto.
contestado el 06 de mayo de 12 a las 10:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php mysql phpmyadmin or haz tu propia pregunta.
¿Qué te hace pensar que se han "desformado"? ¿Cómo y dónde ves los datos dañados? - eggyal
Mirando la tabla en phpMyadmin... Esto me pareció bastante mal formado. Además, mi cronjob que verifica si existe este nombre y lo agrega si no existe, ya no lo ve. Leeré rápidamente los datos y veré cómo los ve mi sitio web. - Mark Tielemans
Es muy posible que la conexión entre PHPMyadmin y MySQL no esté usando UTF-8, o que la página de PHPMyadmin en la que está viendo los resultados no esté codificada en UTF-8... al igual que su cronjob. Asegúrate de
SET NAMES 'utf8'
después de abrir cada conexión si el cliente tiene la intención de enviar/espera recibir usando esa codificación (o si no cambia el valor predeterminado). - eggyalEsto simplemente fue más allá de mi comprensión. Consulté la base de datos por los valores en la parte inferior de la página, sin ningún nombre establecido ni nada, e imprime los valores correctamente, como usted sugirió. Sin embargo, las consultas anteriores en la página no lo hacen. esta consulta:
SELECT charname FROM member
, más o menos igual que el que funciona, devuelve los nombres tan dañados como están en la base de datos cuando los veo. Esto hace que mi cronjob salga mal. Incluso poniendomysql_query("SET NAMES 'utf8'");
arriba no funcionó.. - Mark Tielemans