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:
En la cadena javascript recibida obtengo: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... ..
Código:
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.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... ..
Aquí el código javascript simplificado:
Código:
La duda es pues: ¿porque algunos bytes son sustituidos por 65533 en el "responseText" y cómo puedo evitar/solucionar este problema?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))); } } } };
Les agradezco a todos los que hayáis tomado el tiempo de leer este post por la atención.
Escain