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

AJAX responseText charset

Estas en el tema de AJAX responseText charset en el foro de Frameworks JS en Foros del Web. Hola, no conozco el nivel del foro, soy novato, me estoy estrenando. Tengo el siguiente problema: Al obtener una página en modo AJAX .responseText, al ...
  #1 (permalink)  
Antiguo 03/09/2007, 10:01
 
Fecha de Ingreso: septiembre-2007
Mensajes: 26
Antigüedad: 16 años, 8 meses
Puntos: 1
AJAX responseText charset

Hola, no conozco el nivel del foro, soy novato, me estoy estrenando.
Tengo el siguiente problema:
Al obtener una página en modo AJAX .responseText, al tener el ("Content-Type", "text/html; charset=windows-1252") la página me devuelve acentos y caracteres como la Ñ, que hacen que el texto venga con un carácter sustituto (?)del no reconocido y se cargue el que le sigue. Parece ser que las respuestas AJAX devuelven UTF-8 pero no se si esto tiene forma de cambiarlo; yo no puedo cambiar la respuesta del servidor, tiene que ser algo en el cliente, navegador.
  #2 (permalink)  
Antiguo 03/09/2007, 14:58
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: AJAX responseText charset

realmente no se el funcionamiento del setRequestHeader, por ejemplo io uso
objetoAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

lo que si te dire es que cuando mando a guardar algo a la BD utilizo la funcion escape() asi pueo guardar caracteres especiales sin problemas y devolverlos tal cual, ya sean acentos, n's etc, etc, no creo que lo que mencione te ayude pero por si las moscas, suerte!
__________________
Wow! No se que decir...
  #3 (permalink)  
Antiguo 04/09/2007, 04:03
 
Fecha de Ingreso: septiembre-2007
Mensajes: 26
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: AJAX responseText charset

Creo que los setRequestHeader que se ponen son para las cabeceras que se mandan en la petición (o como POST) al mandar un send(params).
Con el encodeURI o decodeURI se usan en el paso de parámetros como una URL, y el escape y unscape de forma parecida te escapa todos los caracteres no ASCII a base de poner %ddd.
El problema es que ya me llegan los códigos de los caracteres modificados como ?, y como decía se carga el siguiente carácter (car?ter).
  #4 (permalink)  
Antiguo 04/09/2007, 04:40
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: AJAX responseText charset

Hola Txumai. Bienvenido al foro.

Creo que esto te lo podrán contestar mejor en el foro de AJAX.

Mensaje movido desde JavaScript.

Saludos,
  #5 (permalink)  
Antiguo 04/09/2007, 06:54
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: AJAX responseText charset

pero te almacena en la BD correctamente los valores?
__________________
Wow! No se que decir...
  #6 (permalink)  
Antiguo 04/09/2007, 08:20
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: AJAX responseText charset

loading.............


Txumai, por favor revisa en los temas de este foro porque ya se a solucionado este problema muchas veces.


connection closed,
__________________

Maborak Technologies
  #7 (permalink)  
Antiguo 04/09/2007, 09:19
Avatar de chilenozzz  
Fecha de Ingreso: junio-2004
Ubicación: Chile
Mensajes: 44
Antigüedad: 19 años, 10 meses
Puntos: 1
Re: AJAX responseText charset

Cita:
Iniciado por zyon Ver Mensaje
realmente no se el funcionamiento del setRequestHeader, por ejemplo io uso
objetoAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

lo que si te dire es que cuando mando a guardar algo a la BD utilizo la funcion escape() asi pueo guardar caracteres especiales sin problemas y devolverlos tal cual, ya sean acentos, n's etc, etc, no creo que lo que mencione te ayude pero por si las moscas, suerte!
Excelente aporte eso del escape(), me cambió la vida jajaja.

Gracias!
  #8 (permalink)  
Antiguo 04/09/2007, 12:38
Avatar de maiku  
Fecha de Ingreso: agosto-2007
Mensajes: 6
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: AJAX responseText charset

Exelente solución, pasé horas intentándolo todo....


saludos
  #9 (permalink)  
Antiguo 04/09/2007, 17:48
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: AJAX responseText charset

me alegra que si le sfuncionara, saludos!!!
__________________
Wow! No se que decir...
  #10 (permalink)  
Antiguo 06/09/2007, 10:24
 
Fecha de Ingreso: septiembre-2007
Mensajes: 26
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: AJAX responseText charset

MaBoRaK, gracias pero me podías haber pasado una de esas tantas veces solucionado. Yo por de pronto no veo solución de momento.
Repito mi pregunta por si no se me ha entendido bien:
Recibo con el responseText una página corriente (HTML) que me interesa parsear obteniendo su DOM. Hasta aquí todo bien si no fuese porque el texto que me devuelve responseText tiene sustituidos los caracteres NO UTF-8 por un signo ? y además desararece el siguinete carácter. Este es mi problema. No me vale ahora que stá mal el texto ponerle escape o decodeURI ni intentar yo hacer los cambios.
  #11 (permalink)  
Antiguo 07/09/2007, 06:55
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: AJAX responseText charset

jeje creo le ayudo a otros menos al que queria ayudar, mmm en tu BD los datos estan almacenados de manera correcta? o supongo que en la forma donde generas e XML debe aver un encabezado como este

<?xml version="1.0" encoding="UTF-8"?>

,tu como lo tienes?
__________________
Wow! No se que decir...
  #12 (permalink)  
Antiguo 12/09/2007, 05:39
 
Fecha de Ingreso: septiembre-2007
Mensajes: 26
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: AJAX responseText charset

Gracias Zyon, no estoy en servidor (no tiene que ver con DB) es un script en el navegador donde se lee la página HTML con ajax. Buscando con responseBody y responseStream he encontrado cosas para VBScript y para usarlo con el DOM ADODB.Stream para poder crear un fichero en local (un huequecillo que deja Microsoft para poder ejecutar código malvado).
El código VBScript:
body8209 = HTTP.responseBody
sOut = ""
For i = 0 to UBound(body8209)
sOut = sOut & chrw(ascw(chr(ascb(midb(body8209,i+1,1)))))
Next
response.write sOUT
En javascript no disponemos de funciones especiales para byte y wide en los ascii (charCodeAt) ni Char (String.fromCharCode)
  #13 (permalink)  
Antiguo 01/12/2007, 00:50
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Re: AJAX responseText charset

Cita:
Iniciado por Txumai Ver Mensaje

El código VBScript:
body8209 = HTTP.responseBody
sOut = ""
For i = 0 to UBound(body8209)
sOut = sOut & chrw(ascw(chr(ascb(midb(body8209,i+1,1)))))
Next
response.write sOUT
ostras, lo que me ha costado encontrar este código Txumai. Y mira que yo creo que es una situación muy común, leer un archivo html con ServerXMLHTTP y que los caracteres especiales salgan mal.

A veces me pregunto cómo cosas tan normales no les pasa a mucha más gente.

Gracias por el código que es ni más ni menos que "traducir" un archivo binario a texto formateado. Lo jodido es que tarda como 50 veces más que si simplemente lo leyéramos en formato responseText, lo que como tú y yo sabemos, no hay forma de recibir las tildes y demás caracteres especiales, por mucho encabezados, charsets y codepages que se incluyan.

En fin, gracias de nuevo y ahora intentaré depurar el codigo para que no tarde tanto ... si es que se puede.

Saludos

Última edición por dblanco; 01/12/2007 a las 01:36
  #14 (permalink)  
Antiguo 01/12/2007, 01:36
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Re: AJAX responseText charset

Es de buen nacido ser agradecido. Lo prometido es deuda, he encontrado un código que es según su creador 20 veces más rápido que el anterior (y es verdad porque lo he comprobado). Aquí tenéis el link
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 12:28.