Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/09/2008, 02:28
Avatar de mgusdl
mgusdl
 
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 18 años
Puntos: 5
Pregunta Asp + ajax + utf8

Buenos días.

Tengo un problema y llevo 2 horas mirando por todas partes.

El escenario del crimen es un formulario donde se introducen unos datos y se envían, previa validación, mediante post de manera asíncrona de esta manera:
Código PHP:
var frm document.forms.miFormulario;
var 
qString "a=1";
for (
i=0i<frm.elements.lengthi++)
    {
    
qString += "&"frm.elements[i].name "=" frm.elements[i].value;
    }
var 
xo xmlobj();
xo.open('POST''xml_recibe.asp?d1=' d1 '&d2=' d2 '&d3=' d3);
xo.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
xo.onreadystatechange = function()
    {
    if (
xo.readyState == 4)
        {
        
alert(xo.responseText);
        if (
xo.responseText.substring(05) != 'Error'frm.reset();
        
cargaAluP(exafgr);
        }
    }
xo.send(qString); 
La funcion xmlobj() está más que probada y lo único que hace es crear el objeto ajax.

Estos datos se reciben en el citado archivo, se procesan y se insertan en una BD MSSQL.

La solución empezó por comenzar el archivo con:
Código PHP:
<%@ Language=VBScript Codepage=65001 %> 
También he probado, con peores resultados, una función similar a utf8_decode de PHP que me he encontrado.

Después de solucionar las tildes, ñ y resto de caracteres aún me queda que se pierden los espacios en la conversión
Es decir, si envío la cadena "PEPE GONZALEZ", en la BD acaba guardado "PEPEGONZALEZ"

También he probado cambiar la codificación de los archivos implicados de ANSI a UTF8, sin ningún cambio ni a mejor ni a peor.

De momento estoy pensando aplicar un parche, sustituyendo " " por los caracteres ";:" y restaurando luego en destino, pero me gustaría saber si alguien tiene una solución más... bonita.