Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/07/2011, 11:21
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: AJAX, al descargar binario, los caracteres 127+ se evalúan en 65533

¡que tal gente! llevo horas tratando de comprender esto y todavía no llego a algo conclusivo. siempre habia jurado que ajax recibe el código binario en forma de string de forma correcta pero al ver este tema me doy cuenta que estuve mal. estuve buscando algo de información pero lo mucho que pude encontrar fue un artículo que habla sobre el XMLHttpRequest Level 2, el cual señala sobre la técnica de usar overrideMimeType indicando como charset x-user-defined. por lo menos a mi, cuando lo intento -tanto en firefox y chrome- ajax me sigue representando los valores incorrectos.

luego se me ocurrio hacer una prueba desde el lado servidor con php. desde php obtenía el contenido como archivo (file_get_contents), luego lo transformaba a base64 y lo imprimia por pantalla. luego desde el navegador hacia una petición ajax al documento php, convertia la respuesta a binario con atob y determinadaba si había algún byte que tuviera un valor mayor de 0xff. el resultado, todos los bytes estaban correctos.

la conclusión que llegue es que el problema no es el servidor, sino el navegador o javascript. aparentemente uno de los dos no puede hacer una transformación correcta de datos binarios a una representación binaria en string. parece como si al navegador determinar que es un tipo de documento distinto, el navegador lo analiza con la misma aplicación (decoder) que normalmente utiliza para representar dicho contenido en el navegador. nota: esto solo sucede si el navegador interpreta el documento en un content-type distinto a text/*.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.