Tildes y Eñes con Ajax

Cuando se realiza un llamado Ajax, algunas veces los caracteres que contienen tildes y eñes se cambian por interrogaciones para corregir esto, al realizar la construccion del objeto Ajax, se debe cambiar la codificación por defecto así:

function obj_ajax() {
var xmlhttp = false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E) {
xmlhttp = false;
}
}

if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}

xmlhttp.overrideMimeType('text/html; charset=iso-8859-1');
return xmlhttp;
}



La magia es hecha por la linea:
xmlhttp.overrideMimeType('text/html; charset=iso-8859-1');


La funcion que realiza el llamado puede ser de la siguiente manera:

function mostrar_url(url, parametros, div, metodo) {
var contenedor, ajax;
contenedor = document.getElementById(div);
ajax = obj_ajax();
ajax.onreadystatechange = function() {
if (ajax.readyState == 4) {
contenedor.innerHTML =  ajax.responseText;
}
else
{
contenedor.innerHTML = "Realizando consulta....";
}
}

if (metodo == 'get') {
ajax.open("GET", url + '?' + parametros, true);
ajax.setRequestHeader("Content-Type", "text/html;charset=iso-8859-1");
ajax.send(null);
}
else {
ajax.open("POST", url, true);
ajax.setRequestHeader("Content-Type", "text/html;charset=iso-8859-1");
ajax.send(parametros);
}
}

Allí el código que cambia el charset es:
ajax.setRequestHeader("Content-Type", "text/html;charset=iso-8859-1");

Todos mis agradecimientos al siguiente articulo, donde encontré parte de la solucion:
http://www.masquewordpress.com/acentos-y-caracteres-especiales-con-ajax-y-jquery-ii-parte/#