Gracias a todos por vuestra aportación!
Os pongo cómo lo he solucionado finalmente:
Código PHP:
$respuesta = new xajaxResponse('ISO-8859-1');
...etc...
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->decodeUTF8InputOn() ;
$xajax->registerFunction("nombrefuncion");
$xajax->processRequests();
así funciona estupendamente.
Si el problema fuera escribir en pantalla un texto obtenido mediante xajax, lo solucioné asi:
Código PHP:
$traduce=array( 'á' => 'á' , 'é' => 'é' , 'í' => 'í' , 'ó' => 'ó' , 'ú' => 'ú' , 'ñ' => 'ñ', '"' => '"');
$cal1 = strtr( $cal, $traduce );
....
$respuesta->addAssign("Layer2","innerHTML", "<span class='Estilo2'>$cal1</span><br>")
muchas gracias y un saludo!!