Ajax发送错误的字符集


Ajax sends wrong charset

Ajax正在发送到PHP

Ĺ asija-kabina

代替

Šasija-kabina

虽然我确实在任何地方声明了字符集。在html文件的头部,我得到了这个:

<meta charset="ISO-8859-2">

在PHP文件中,我得到了这个:

header('Content-Type: text/html; charset=latin2');

这是我的ajax函数,其中"str"是一个json数组:

function updateField(str, id, prevvalue, value, vehicletype){
    $.ajax({
        type: "get",
        url: "inc/ajax/form_rest.php",
        data: { q:str, prevvalue:prevvalue, value:value, vehicletype:vehicletype },
        contentType: "application/json;charset=latin2",
        success: function(html) {
                    $('#'+id).html(html);
                }
        })
        .done(function(){
            $("#"+id).removeAttr("disabled");
            if($("#"+id+" option").length == 2){
                $("#"+id).val($("#"+id+" option:last-child").val()).change();
            }
            if($("#"+id+" option:last-child").val() == ""){
                $("#"+id).attr("disabled", "disabled");
            }
        });
}

尽管如此,我还是得到了错误的输出。有人能帮我吗?

我认为您需要为字符集使用正确的ISO名称,例如change:

contentType: "application/json;charset=latin2",

contentType: "application/json;charset=ISO-8859-2",

我还认为,使用UTF-8以外的任何东西都会在项目后期给您带来更多麻烦,因为PHP中的json_encode实际上只支持UTF-8。

您使用外部javascript文件吗?,我认为您还需要设置包含javascript文件的字符集

<script src="myscripts.js" charset="latin2"></script>

但我真的建议您在服务器端和客户端脚本

上都使用UTF-8