no lo comprendo muy bien, pero parece que hay una diferencia sustancial cuando se trata de contenido por ajax y contenido por navegador.
http://phpscripting.awardspace.us/ntilde.php
ntilde.php
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Devel</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body><script type="text/javascript">
alert("<?php echo 'from html:\nunicode: \u00f1\nliteral: ñ'; ?>");
</script>
<script type="text/javascript" src="ntilde.js.php"></script>
</body>
</html>
ntilde.js.php
Código PHP:
<?php header("Content-Type: text/javascript; charset=utf-8");
echo 'alert("from js file:\nunicode: \u00f1\nliteral: ñ");';
?>
en ese ejemplo, fíjate que tanto el script en html como en el archivo js muestra bien el caracter. sin embargo, si cargas ntilde.php por ajax y haces un alert verás que no se interpreta el unicode. mi hipótesis es que javascript no está analizando el string que viene por ajax y por tanto no puede
parsear las secuencias unicode.