【问题标题】:Ajax sends wrong charsetAjax 发送错误的字符集
【发布时间】:2013-06-25 17:19:02
【问题描述】:

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");
            }
        });
}

尽管如此,我得到了错误的输出。谁能帮我解决这个问题?

【问题讨论】:

标签: php html ajax json character-encoding


【解决方案1】:

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

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

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

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

【讨论】:

  • 不幸的是,这个解决方案也不起作用。当我使用 UTF-8 时,它会在菱形中显示这些字符的问号,例如 Š
  • 它在哪里显示问号?当您将数据发送回页面时?
  • 好吧,当我将头部的字符集更改为 UTF-8 时,它会将所有克罗地亚字符显示为黑色菱形中的问号。该网站本身就是克罗地亚语。
  • 我建议您阅读以下内容:stackoverflow.com/questions/279170/utf-8-all-the-way-through 虽然您可能可以让它与 Latin-2 一起使用,但这仍然会让您在未来与其他 Web 服务交互时遇到困难。
【解决方案2】:

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

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

但我真的建议您在服务器端和客户端脚本上都使用 UTF-8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-22
    • 2013-04-26
    • 1970-01-01
    • 2015-11-12
    • 2011-08-07
    • 2013-03-21
    • 2016-03-02
    • 1970-01-01
    相关资源
    最近更新 更多