Foros del Web » Creando para Internet » Diseño web »

Error con acentos con carga asíncrona

Estas en el tema de Error con acentos con carga asíncrona en el foro de Diseño web en Foros del Web. Acabo de implementar en mi página web una carga asincrona con javascript. El problema es que al llamar a otra página para cargarla dentro de ...
  #1 (permalink)  
Antiguo 05/04/2008, 21:42
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 8 meses
Puntos: 142
Pregunta Error con acentos con carga asíncrona

Acabo de implementar en mi página web una carga asincrona con javascript. El problema es que al llamar a otra página para cargarla dentro de la principal, las letras con acento se cargan como un cuadro, removiendo además las dos siguientes letras a esta. ¿Alguien podría decirme como corrijo esto para mostrar la información de forma correcta?
  #2 (permalink)  
Antiguo 06/04/2008, 12:43
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 8 meses
Puntos: 67
Re: Error con acentos con carga asíncrona

A ver, aquí falta un dato, estás trabajando con el objeto xmlHttpRequest y PHP? como lo haces? Si es con PHP hay una solución, todo el contenido que se imprime aplícale la función urlencode, eso hará que el contenido esté con código url, después en JavaScript a aplicas ese contenido la función unescape y luego lo usas para mostrar el contenido. Espero que te sirva.
  #3 (permalink)  
Antiguo 06/04/2008, 19:42
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 8 meses
Puntos: 142
Re: Error con acentos con carga asíncrona

Lo hago directo con JavaScript ya que mi página está en un servidor gratuito. El código que uso es este, enviando como parámetro url una página html y para id el div en el que se cargará:

Código:
function loadurl(url, id){
	var pagecnx = crearXMLHttpRequest();
	pagecnx.onreadystatechange=function()
	{
		setpage(pagecnx, id)
	}
	pagecnx.open('GET', url, true)
	pagecnx.send(null)
}

function setpage(pagecnx, id){
	if (pagecnx.readyState == 4 && (pagecnx.status==200 || window.location.href.indexOf("http")==-1))
	document.getElementById(id).innerHTML=pagecnx.responseText
}

function crearXMLHttpRequest() {
	var xmlHttp=null;
	if (window.ActiveXObject) 
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	else 
		if (window.XMLHttpRequest) 
			xmlHttp = new XMLHttpRequest();
	return xmlHttp;
}
¿Puedo solucionar mi problema?
  #4 (permalink)  
Antiguo 07/04/2008, 14:51
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 8 meses
Puntos: 67
Re: Error con acentos con carga asíncrona

Claro que puedes solucionar tu problema, simplemente implementa una función que convierta los carácteres latinos a sus respectivas entidades HTML, una opción sería esta función:

Código:
function htmlent(txt) {
              txt = txt.replace(/á/g, "á");
              txt = txt.replace(/é/g, "é");
              txt = txt.replace(/í/g, "í");
              txt = txt.replace(/ó/g, "ó");
              txt = txt.replace(/ú/g, "ú");
              txt = txt.replace(/ñ/g, "ñ");
              return txt;
}
Esta función la aplicas de esta manera:

Código:
function setpage(pagecnx, id){
	if (pagecnx.readyState == 4 && (pagecnx.status==200 || window.location.href.indexOf("http")==-1))
	document.getElementById(id).innerHTML=htmlent(pagecnx.responseText);
}
Espero que te sirva.
  #5 (permalink)  
Antiguo 08/04/2008, 09:13
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 8 meses
Puntos: 142
Re: Error con acentos con carga asíncrona

¡Muchisimas gracias por la solución! Es justo lo que necesitaba.
  #6 (permalink)  
Antiguo 09/04/2008, 10:28
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 8 meses
Puntos: 142
Re: Error con acentos con carga asíncrona

Ya lo he probado. Es extraño, pero no me ha funcionado el código. Te dejo un link para que lo cheques y me digas si puse algo mal por favor, o si identificas el problema en caso sea solucionable. Gracias de nuevo...

http://mx.geocities.com/daphyreweb/test/
  #7 (permalink)  
Antiguo 09/04/2008, 14:08
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 8 meses
Puntos: 67
Re: Error con acentos con carga asíncrona

El problema es que el objeto XMLhttpRequest al obtener el texto no reconoce los carácteres latinos, está de más esa función que te he dado porque de antemano el texto que se le pasa no contiene ningún carácter latino, en su lugar hay un cuadradito, que me parece que es un carácter que simplemente no se reconoce. Bien, tal y como lo planteas yo no encuentro manera de solucionarlo, pero me pregunto porqué tienes que ponerle carácteres con acentos si puedes usar las entidades html, cuando trabajas con php no hay problema porque utilizas la función htmlentities para tranformar los carácteres latinos a su respectiva entidad html, pero en tu caso trabajas solo con html, simplemente escribe todo con entidades.
  #8 (permalink)  
Antiguo 09/04/2008, 19:04
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 8 meses
Puntos: 142
Re: Error con acentos con carga asíncrona

Creo que con entidades te refieres a los &;...

Respondiendo a eso, pues la verdad es más sencillo escribirlo directo, pero al final supongo que tendré que usarlos aunque sea un poco más de trabajo. Y respecto al PHP, verás, que uso un servidor gratuito que no me lo permite.

De cualquier forma, gracias por tu tiempo, me ayudó tambien a aprender más cosas sobre JavaScript y otros detalles. Gracias por todo.
  #9 (permalink)  
Antiguo 10/04/2008, 17:01
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 8 meses
Puntos: 67
Re: Error con acentos con carga asíncrona

Hay servidores gratuitos que soportan PHP, solo búscalos si te hacen falta y sino pues usa el dream que genera automáticamente las entidades html (así se llaman, es su nombre oficial).
  #10 (permalink)  
Antiguo 21/02/2011, 08:33
 
Fecha de Ingreso: octubre-2008
Ubicación: Santiago de Cali
Mensajes: 2
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Re: Error con acentos con carga asíncrona

Prueba creando la funcion que propone ELjavista pero con estas sentencias:

function htmlent(texto) {
texto = texto.replace(/(\xF1)/g, 'n').replace(/(\xD1)/g, 'N');
texto = texto.replace(/(\xE1)/g, 'a').replace(/(\xC1)/g, 'A');
texto = texto.replace(/(\xE9)/g, 'e').replace(/(\xC9)/g, 'E');
texto = texto.replace(/(\xED)/g, 'i').replace(/(\xCD)/g, 'I');
texto = texto.replace(/(\xF3)/g, 'o').replace(/(\xD3)/g, 'O');
texto = texto.replace(/(\xFA)/g, 'o').replace(/(\xDA)/g, 'O');

return txt;
}
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 22:33.