У меня есть веб-страница в UTF-8, определенная в заголовке
<meta charset="utf-8" />
Тогда у меня есть внешний файл .js, содержащий следующий код:
function ajax_db(){
$(document).ready(function(){
//some variables defined
$.ajax({
type:"POST",
url:"db.php",
data:"u="+uname+"&p="+pass+"&m=1",
dataType:"text",
contentType: "application/x-www-form-urlencoded;charset=utf-8",
success: function(reply){
$("#regstat").html("<p class='status'>"+reply+"</p>");
}
});
});
}
Как видите, запрос переходит к db.php, и если m установлен в 1 и не все поля заполнены, он заканчивается здесь:
$mode = htmlspecialchars($_POST['m']);
//Mode: 1 - register, 0 - log in, 2 - log out
if ($mode == 1){
if (empty($_POST['u']) || empty($_POST['p']) || empty($_POST['email'])){
$reply = "Словенъска";
echo utf8_encode($reply);
exit;
}
//more code
}
Проблема в том, что вместо текста возвращается моджибаке. Я пытался заставить кодировку utf-8 везде, где мог, я вставил в db.php следующие строки:
mb_internal_encoding( 'UTF-8' );
header("Content-type: text/html; charset=utf-8");
Никакого эффекта. Кроме того, если я удалю функцию utf8_encode (), будут возвращены поля с вопросительными знаками, которые должны указывать, что utf-8 не используется.
Где может быть проблема?
Спасибо за ваше время.