Hola :)
He escrito un código javascript para descargar un archivo de imagen mediante una petición AJAX (El motivo es un larga historia).
Pero cuando recibo la cadena de respuesta, todos los bytes 127-255 son sustituidos por el 65533 unicode, con la obvia perdida de información.
Por ejemplo a partir de la imágen:
Código:
66 77 54 16 0 0 0 0 0 0 54 0 0 0 40 0 0 0 32
0 0 0 32 0 0 0 1 0 32 0 0 0 0 0 0 0 0 0 19 11
0 0 19 11 0 0 0 0 0 0 0 0 0 0 255 255 255 0
255 255 255 0 0 0 0 28 0 0 0 65 0 0 0 37 135
135 135 0 145 145 144 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0...
..
En la cadena javascript recibida obtengo:
Código:
66 77 54 16 0 0 0 0 0 0 54 0 0 0 40 0 0 0 32
0 0 0 32 0 0 0 1 0 32 0 0 0 0 0 0 0 0 0 19 11
0 0 19 11 0 0 0 0 0 0 0 0 0 0 65533 65533 65533 0
65533 65533 65533 0 0 0 0 28 0 0 0 65 0 0 0 37 65533
65533 65533 0 65533 65533 65533 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
..
No tengo gran idea de cual es el problema, he buscado en muchas páginas pero al ser un error tan específico, no he encontrado nada que me saque de duda.
Aquí el código javascript simplificado:
Código:
var http = new XMLHttpRequest();
http.onreadystatechange = callbacksend;
http.open("post", "http://www.miweb.com/Icon.bmp", true);
http.setRequestHeader("Accept-Charset", "utf-8");
http.setRequestHeader("Content-Transfer-Encoding","binary");
http.send(null);
function callbacksend(){
if(http.readyState == 4){
if(http.status == 200){
// todo ok
for( var i=0; i < 100; i++){
document.body.appendChild(document.createTextNode(" " + http.responseText.charCodeAt(i)));
}
}
}
};
La duda es pues: ¿porque algunos bytes son sustituidos por 65533 en el "responseText" y cómo puedo evitar/solucionar este problema?
Les agradezco a todos los que hayáis tomado el tiempo de leer este post por la atención.
Escain