Inicio > SQL Server > arkide > No me graba las tildes y las eñes en mi base de datos

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

Experto:
Usuario:
Fecha: 23/10/2009
Valoración: (5,00 sobre 5) Categoría: SQL Server
15/10/2009
whynot_80, usuario preguntando en SQL Server
Usuario
Hola,
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 traves 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 codificacion 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!
Gracias!
16/10/2009
whynot_80, experto respondiendo en SQL Server
Experto
El PHP no es el problema...
Cuando creas las tablas en MySQL (y tambien 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 colacion latina y debe de solucionarse el problema.
Nota que lo que ya este en la base de datos NO va a cambiar por la colacion, tendrias que hacer una conversion 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.
16/10/2009
whynot_80, usuario preguntando en SQL Server
Usuario
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 estan en codigo 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 comun 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?
23/10/2009
whynot_80, experto respondiendo en SQL Server
Experto
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 ñ/Ñ tendrias que hacer una conversion de caracteres por ejemplo:
ñ=ñ Ñ=Ñ etc, etc
Igual tienes que ver para convertir los demas caracteres que no sean visibles o sean "raros"
Espero sea de utilidad. un saludo
23/10/2009
whynot_80, usuario preguntando en SQL Server
Usuario
Gracias el lunes lo mirare a ver que tal!
Enlaces patrocinados