Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Caracteres incorrectos en responseText

Estas en el tema de Caracteres incorrectos en responseText en el foro de Frameworks JS en Foros del Web. Brevemente, mi problema es que no se que tengo que poner en una pagina mia para acceder a otra remota, y que el set de ...
  #1 (permalink)  
Antiguo 04/06/2008, 05:00
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Caracteres incorrectos en responseText

Brevemente, mi problema es que no se que tengo que poner en una pagina mia para acceder a otra remota, y que el set de caracteres recibido sea el correcto.

Antes de seguir, quiero aclarar que no tengo acceso al lado del servidor (lo digo por las soluciones para php ya dadas antes en el foro).

He probado con las meta:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="es" />
Antes del envio post he probado con:
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
req.setRequestHeader("Accept-Charset","UTF-8");
Donde pone utf-8 tambien he probado poniendo iso-8859-1 y windows-1252.

Revisando las cabeceras recibidas en getAllResponseHeaders, solo es de destacar dos cookies, un content-type=text/html y un transfer-encoding=chunked.

He grabado el archivo .htm en Unicode, Utf-8 y Ansi, por si acaso.

Si hago un alert del responseText en cuanto se ha recibido (readyState==4), observo que hay algunos caracteres que no se pueden interpretar, y se muestran como un cuadrado, pero es que ademas, esos extraños signos provocan que se eliminen los caracteres vecinos. Y eso, ademas de afear la pagina, puede provocar un error de javascript si, por ejemplo, se come un caracter doble comillas de fin de expresion, y de hecho eso me ocurre y deja inutil la pagina cuando vuelco el codigo recibido a un iframe de mi pagina.

Si abres la pagina remota en el IE o Firefox directamente se ve bien todo, las eñes, los acentos, la interrogacion y exclamacion para abrir, etc.

¿ Alguien sabe si hay alguna forma de ver una pagina bien con el objeto xmlhttprequest pero sin acceso al lado servidor ?. ¿ Existe alguna funcion de conversion que pueda aplicar al responseText que me permita la correcta visualizacion de las eñes, acentos, etc ?

Gracias anticipadas por toda ayuda que me podais prestar.
  #2 (permalink)  
Antiguo 05/06/2008, 10:10
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
De acuerdo Respuesta: Caracteres incorrectos en responseText

si no tienes acceso a la parte del servidor quiza te valga esto:

http://kevin.vanzonneveld.net/code/p...valents/php.js

las funciones utf8_encode y utf8_decode

suerte
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 05/06/2008, 12:37
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Respuesta: Caracteres incorrectos en responseText

Creia que las funciones utf8_encode y utf8_decode que mencionaste me ayudarian, pero no ha sido asi.

Te pondre un ejemplo de lo que pasa. En la pagina original, si la cargas desde un navegador (como el IE), tienes la siguiente cadena de texto:
¿Desea salir del menú de utilidades?

Si lo coges con ajax y haces directamente un alert(req.responseText) obtienes:
#Desea salir del men#utilidades?

Si utilizas en cambio alert(utf8_encode(req.responseText)) obtienes:
¡¿¿Desea salir del menï¿¿utilidades?

Y si utilizas finalmente alert(utf8_decode(req.responseText)) obtienes:
#sea salir del men#ilidades?

Donde hay un simbolo almohadilla (#) en realidad es un cuadrado; supongo que sera un simbolo raro que no puede interpretarse bien al imprimirlo.

Si cargo la pagina en el Firefox, se vera correctamente si le digo Ver/ Codificacion de caracteres/ iso-8859-1 y la windows-1352. Si eligo que me lo muestre en utf-8 ya no lo muestra correctamente. Digo esto por si ayuda en algo.

Es desesperante, le estoy dando mil vueltas y no consigo cargar la pagina correctamente. ¿ Que charset esta enviando el servidor ?. ¿ Porque los navegadores no tienen ningun problema y con ajax no puedo ver bien lo recibido ?.

He estado haciendo pruebas, y he recorrido el string del responseText haciendo que me imprima cada caracter y su valor numerico (charcodeAt) y he descubierto que los caracteres raros tienen el valor 65535 (FFFF en hexadecimal). No se si esto puede ser un dato importante.

Salu2.

Última edición por ccratfdw; 05/06/2008 a las 13:45 Razón: Ampliar info. error
  #4 (permalink)  
Antiguo 05/06/2008, 13:59
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: Caracteres incorrectos en responseText

el servidor esta en windows o linux, que codificacion usa el servidor? has probado con iso-8859-2??
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #5 (permalink)  
Antiguo 06/06/2008, 13:26
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Respuesta: Caracteres incorrectos en responseText

el servidor esta en windows o linux

No lo se, como dije no tengo acceso a el. Solo te puedo decir que las cabeceras devueltas informan de que el server es Sun ONE Web Server 6.1 y aparece ademas una cookie JSESSIONID. Esto suena a Java, ahora no se la plataforma.

que codificacion usa el servidor?

No tengo acceso a el, no te lo puedo decir. Y en las cabeceras devueltas solo aparece lo de Content-Type: text-html

has probado con iso-8859-2??

He puesto la linea:
req.setRequestHeader("Accept-Charset","iso-8859-2")
y sigue pasando lo mismo.

Hay una funcion llamada responseBody que en teoria es una array de enteros unsigned con el mensaje devuelto en raw. Si supiera como manipularlo a lo mejor se podria hacer algo. Pero he intentado tratarlo como un array y no me deja, extraer un caracter si fuera una string y tampoco me deja. Solo me deja hacer alert(req.responseBody) y ver en pantalla un chorreo de caracteres raros.

Salu2
  #6 (permalink)  
Antiguo 07/06/2008, 21:56
Avatar de gepd  
Fecha de Ingreso: diciembre-2007
Mensajes: 142
Antigüedad: 16 años, 4 meses
Puntos: 6
Respuesta: Caracteres incorrectos en responseText

debes colocar header("Content-Type: text/html; charset=iso-8859-1"); pero en el archivo php que haces la solicitud no en el que recibes...
  #7 (permalink)  
Antiguo 09/06/2008, 14:27
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Respuesta: Caracteres incorrectos en responseText

Creo que te olvidas de lo que dije al principio, en la pregunta inicial: no tengo acceso al lado del servidor, y ademas no es PHP.

Lo mas parecido a lo que dices es poner en mi fichero .htm la linea
<meta http-equiv="Content-Type" content="text/html; charset="iso-8859-1 />
,y si has leido todo el hilo, eso tambien esta probado.

La cuestion es que el objeto xmlhttprequest usa utf-8 para recoger datos (segun he podido averiguar googleando), y el servidor envia un charset que debe ser distinto. Si supiera cual es y existiera alguna funcion de conversion en el lado cliente, ya estaria hecho. Pero veo que nadie es capaz de resolverme esta cuestion.

Salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:09.