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=0; i<frm.elements.length; i++)
{
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(0, 5) != 'Error') frm.reset();
cargaAluP(ex, af, gr);
}
}
xo.send(qString);
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 %>
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.