在Javascript中显示重音字符

在Javascript中显示重音字符,javascript,ajax,json,non-ascii-characters,Javascript,Ajax,Json,Non Ascii Characters,我在应用程序中显示重音字符时遇到问题;它显示出⛽而不是ó。该字符串来自从服务器检索的json文件。以下是技术细节: JSON:(这是从服务器检索的对象) 注意第三个键“Relación”,字母“o”是重音 [ { "key": "Canales" }, { "key": "Productos" }, { "key": "Relación con el ejecutivo" } ] Aja

我在应用程序中显示重音字符时遇到问题;它显示出而不是ó。该字符串来自从服务器检索的json文件。以下是技术细节:

JSON:(这是从服务器检索的对象)
注意第三个键“Relación”,字母“o”是重音

[
    {
        "key": "Canales"
    },
    {
        "key": "Productos"
    },
    {
        "key": "Relación con el ejecutivo"      
    }
]
Ajax(以下是检索信息的代码)
注意,正如大多数答案所示,我已经添加了charset=utf-8

$.ajax({
    url: url,
    type: "GET",
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function(uri){
         alert("clintg test: " + JSON.stringify(uri));
    }
}
警报:(如您所见,它只是在它应该位于的位置显示一个方框符号->ó


要更详细地了解@georg帮助我解决这个问题的建议:

因为我不能更改服务器端脚本,所以我调整了服务器端的代码。
我将ajax请求中的字符集更改为ISO-8859-1,但由于ajax的默认字符集是utf-8,因此我必须使用
$.ajax覆盖该字符集。在发送之前

$.ajax({
    url: url,
    type: "GET",
    dataType: "json",
    contentType: "application/json; charset=iso-8859-1",
    success: function(uri){
         alert("clintg test: " + JSON.stringify(uri));
    },
    beforeSend: function(jqXHR) {
        jqXHR.overrideMimeType('application/json;charset=iso-8859-1');
    }
}

这里有一个问题的链接,帮助我找出并覆盖字符集:

试试utf8\u encode()或类似的东西。。当从服务器传递数据时…那么这将是在PHP API端?是的..您使用的是什么服务器端技术?我不确定,我只负责应用程序的前端(javascript、html等)。我无法修改API上的代码。从您的第一个代码片段可以明显看出,服务器数据实际上编码为ISO 8859(Win1252),而不是utf8。在ajax调用中使用该字符集,或者,更好的做法是,联系服务器端人员,告诉他们从2014年起不使用unicode是一件很遗憾的事情。非常感谢您,我在XHTPrequest中使用了该字符集,比如“xhr.overrideMetype(“application/json;charset=iso-8859-1”);我可能听起来有些离题。但我在angular2中也有类似的问题。我该如何解决?