Ver Mensaje Individual
  #21 (permalink)  
Antiguo 11/07/2008, 06:14
Avatar de mgusdl
mgusdl
 
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años, 7 meses
Puntos: 5
Respuesta: Caracteres especiales en Javascript

Permitidme que rescate este tema, llevémoslo más allá!

Puesta en escena:
Tengo un formulario generado dinamicamente con javascript (appendChild a hierro) consistente en un área de texto y un botón.

Al pulsar el botón se envía el contenido del textarea a un archivo PHP usando un poco de manteca, digo, AJAX.

Con la siguiente función genero el pseudo-formulario y envío los datos en POST:
Código:
function nuevoM(curso)
	{
	if (document.getElementById('nuevoMensaje')) return;
	var lbl = document.createElement('label');
	lbl.htmlFor = 'nuevoMensaje';
	lbl.appendChild(document.createTextNode('Nuevo registro en el diario:'));
	document.getElementById('Mdiario').appendChild(lbl);
	var txta = document.createElement('textarea');
	txta.id = 'nuevoMensaje';
	txta.rows = 5;
	txta.cols = 80;
	txta.className = 'ancho100';
	document.getElementById('Mdiario').appendChild(txta);
	var btn = document.createElement('input');
	btn.type = 'button';
	btn.value = 'Insertar';
	btn.onclick = function ()
		{
		if (txta.value == '') return;
		txta.value.replace('€', 'EUR');
		var xo = xmlobj();
		xo.open('POST', 'ejecucion/xml_diario.php?id=' + curso);
		xo.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
		xo.onreadystatechange = function()
			{
			if (xo.readyState == 4) if (xo.responseText.substr(0, 5) == 'Error') alert(xo.responseText);
			}
		xo.send('msg=' + txta.value);
		xo.send('msg=' + txta.value);
		cargaDiario(curso);
		cutChilds(document.getElementById('Mdiario'));
		}
	document.getElementById('Mdiario').appendChild(btn);
	}
Todos los archivos están codificados en ANSI, yo únicamente uso EditPlus para estos menesteres, pero los datos los recibo en UTF8, cosas de javascript, firefox y Rita "la Cantaora"

He probado, sin éxito, cambiar el carácter € antes de enviar la información, pero JS no se percata de su existencia.
He probado, sin éxito, cambiar la codificación de los archivos a UTF8.
He probado, sin éxito, soluciones propuestas en la web de PHP para utf8_decode.

La cosa me queda así:

(las ? deberían ser €)

Ahora me queda probar lo de lanzar un piano por la ventana, a ver si acierto.

Se aceptan sugerencias!!!

Última edición por mgusdl; 11/07/2008 a las 06:46 Razón: añadida captura