【问题标题】:Displaying accented character in Javascript在 Javascript 中显示重音字符
【发布时间】:2015-01-09 04:10:18
【问题描述】:

我在我的应用程序中显示重音字符时遇到问题;它显示的是 而不是 ó。该字符串来自从服务器检索的 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));
    }
}

警告:(如您所见,它只是在应有的位置显示一个方框符号 -> ó

【问题讨论】:

  • 尝试 utf8_encode() 或类似的东西......同时从服务器传递数据......
  • 所以这将在 PHP API 端?
  • 是的..您使用的是什么服务器端技术?
  • 我不确定,我只负责应用程序的前端(javascript、html等)。我无法修改 API 上的代码。
  • 从您的第一个 sn-p 可以明显看出,服务器数据实际上被编码为 ISO 8859 (Win1252),而不是 utf8。在您的 ajax 调用中使用该字符集,或者更好地联系服务器端人员并告诉他们从 2014 年起不使用 unicode 是一种耻辱。

标签: javascript ajax json non-ascii-characters


【解决方案1】:

要更详细地说明帮助我解决此问题的 @georg 建议:

由于我无法更改服务器端脚本,因此我调整了我这边的代码。
我将 ajax 请求中的 charset 更改为 ISO-8859-1,但由于 ajax 的默认 charset 是 utf-8,所以我不得不覆盖 charset $.ajax.beforeSend:

$.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');
    }
}

这是帮助我找出并覆盖字符集的问题的链接:Jquery ignores encoding ISO-8859-1

【讨论】:

  • 这对我很有帮助,谢谢我将它与这样的 xhttpRequest 一起使用" xhr.overrideMimeType("application/json;charset=iso-8859-1");
  • 我听起来可能跑题了。但是我在angular2中有类似的问题。我该如何解决?
猜你喜欢
  • 2015-01-23
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多