No me graba las tildes y las eñes en mi base de datos

Pues a ver. Tengo un flash que por php envía los datos de un formulario a una bbdd que he creado. Lo hace todo bien, graba los datos y demás...
El problema viene porque lo que necesito es a través de PHPmyAdmin, entrar y exportar un XLS (o similar) pero las eñes y las tildes me las saca con caracteres raros...
He probado mil combinaciones de codificación y no doy con la tecla. ¿Me podrías echar una mano?
Te doy datos de cómo lo tengo ahora mismo:
- En el archivo PHP tengo lo siguiente: header("Content-type: text/xml; charset=UTF-8");
- Luego en PHPmyAdmin, en la página de inicio, el juego de caracteres de MySQL está en UTF-8 Unicode (utf8); y el cotejamiento de las conexiones MySQL en utf8_general_ci
- Luego si pulso en la bbdd, me dice que el cotejamiento está en utf8_general_ci
He probado con unicode, con spanish 1 y 2,... En fin...
A ver si me puedes dar una pista!
Respuesta
1
El PHP no es el problema...
Cuando creas las tablas en MySQL (y también en SQL) tienes que manejar las colaciones, es decir el lenguaje interno con que se va a crear la tabla, por default viene como utf8 colation ingles, cambialo a colación latina y debe de solucionarse el problema.
Nota que lo que ya este en la base de datos NO va a cambiar por la colación, tendrías que hacer una conversión de caracteres a otra tabla para "salvar" lo que ya se quedo con caracteres raros.
Recuerda que la Ñ NO existe en ingles, por eso las bases de datos graban caracteres raros o no visibles en ciertos caracteres.
Gracias por al respuesta. He estado toda la mañana haciendo pruebas, he consultado a mi proveedor de hosting, etc.
En resumen ahora mismo lo tengo así:
EL HTML:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
EL PHP: header('Content-Type: text/html; charset=ISO-8859-1');
EL MYSQL, tablas y campos: cotejamiento en latin1_general_ci
Y nada, me sigue grabando los datos sin eñes ni tildes.
El proveedor me ha contestado lo siguiente (de lo único que me he enterado es que me cobrarían por solucionarlo):
Se le explicó que los datos contenidos en las tablas están en código html, seguramente guardado con htmlentities. Que es correcto en la forma de programar, no obstante cuando hace la exportación en excel MYSQL entiende que es texto común independientemente del cotejameiento o charset que use, si Ud guarda el texto "HOLA" en utf o iso será lo mismo, MYSQL no es erróneo porque eso ve en su contenido.
SI Ud desea exportar a excel deberá decodificar el texto antes, con alguna función de php capaz de reconvertir texto.
La solución es que desviemos la incidencia a nuestro departamento de desarrollo el cual puede prepara una clase para hacer la exportación en excel previamente decodificado, recuerde que estos son aspectos de programación que no están incluidos en su Administración Delegada, y se hará un presupuesto por la programación del mismo.
¿Le ves algún sentido?
Mencionando lo de flash cambia un poco la cosa... flash maneja "codificacion" html y esto lo vi muy superficialmente
Para que flash te muestre correctamente la ñ/Ñ tendrías que hacer una conversión de caracteres por ejemplo:
ñ=ñ Ñ=Ñ etc, etc
Igual tienes que ver para convertir los demás caracteres que no sean visibles o sean "raros"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas