Проблемы с кодировкой. Ajax.

Nexus_Noob

Новичок
Доброго времени суток.
Не нашел решения проблемы в сети, пробовал многие варианты.

При асинхронной загрузке страницы, все буквы "х" русского алфавита превращаются в "�".
В БД все записано нормально, т.е. без "�".
Если перезагрузить страницу не используя ajax, то все отображается нормально.

В начале php документа прописано:
PHP:
header('Content-Type: text/html; charset=utf-8'); 
mb_internal_encoding("utf8");
/*подключение к БД*/
mysql_query('SET NAMES `utf8`');
mysql_set_charset("utf8");
В head страницы:
PHP:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Подскажите, пожалуйста, как можно избавится от "�" получая страницу используя ajax.
Уже 2 дня не могу решить проблему.

js файл:
PHP:
$(document).ready(function(){
	$("a").each(function(){
		if(this.href.indexOf(window.location.hostname)!=-1 || this.href!="javascript://") $(this).attr('onclick', 'ajax_link(this);return false;');
	});
});

function ajax_link(ths){
	$(document).ready(function(){
		$("#overlay").fadeIn(100);
		$.ajax({
			url: ths.href,
			cache: false,
			type: "get",
			data: "get=true",
			success: function(res){
				history.pushState({title:$(ths).text(), href:ths.href}, null, ths.href);
				$("title").html($(ths).text());
				eval(res);
				$("#overlay").fadeOut(100);
			},
			error: function(XMLHttpRequest,textStatus,errorThrown){
				$("#overlay div").css({"width":"200px","text-align":"center"}).html("Error "+XMLHttpRequest.status+": "+XMLHttpRequest.statusText);
				setTimeout(function(){
					if(XMLHttpRequest.status!="404"){
						window.location.href=ths.href;
						$("#overlay a").hide();
					}else{
						$("#overlay").hide();
						$("#overlay div").html('<img src="/img/loader.gif"/>Загрузка');
					};
				},5000);
			}
		});
	});
};

window.onpopstate=function(e){window.location.href=e.state.href;};
Спасибо за внимание.
 

ksnk

прохожий
От сервера таки целый javascript прилетает? Насколько оправдано eval'ом пользоваться? Может можно и проще?

Разумно проверить на каком этапе появляются закорючки вместо X. Просто посмотреть во вкладке Network в панели отладки Хрома, что конкретно прилетело и с какими буквами. Если их корежит php - вопрос по адресу , если javascript - не совсем.
 

Nexus_Noob

Новичок
ksnk, от сервера "прилетает" js.
В Хроме во вкладке "Network»Response" все "х" уже заменены на "�".

Ответ перед отправкой пользователю проходит через:
PHP:
$content=addslashes($content);$content=preg_replace('/\v/','',$content);
 

ksnk

прохожий
Не! utf8 надо было писать в регулярке, видимо.
PHP:
'/\v/u'
Хотя мистический смысл такого реплейса, как и передача настоящего скрипта вместо json от меня ускользает. Да и логика, imho, размазывается на серверную часть и на скриптовую.
 
Сверху