Ajax:强制utf-8编码

ajax: force utf-8 encoding

本文关键字:编码 utf-8 强制 Ajax      更新时间:2023-09-26

我有一个UTF-8格式的网页,定义在head

<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
}

问题是,它返回一些mojibake而不是文本。我尝试在任何可能的地方强制使用utf-8编码,我在db.php中放入以下行:

mb_internal_encoding( 'UTF-8' );
header("Content-type: text/html; charset=utf-8");

完全没有效果。此外,如果我删除utf8_encode()函数,将返回问号框,这应该表明没有使用utf-8。

问题出在哪里?

感谢您的宝贵时间。

您还应该确保db.php文件以UTF-8编码保存。