阅读&解析unicode json数据在IE和FF中不起作用

时间:2014-12-01 09:45:30

标签: jquery json internet-explorer unicode cors

我想从另一个域(CORS)读取json数据文件。 此文件包含Unicode数据,如:

{"id":21,"name":"پرسپولیس تهران"}

我使用了这样的JQuery Ajax函数:

$.ajax({
    type: "GET",
    cache: false,
    url: SDomain + 'XML/TeamXMLCache/' + filename + '.json',
    dataType: "json",
    contentType: 'application/json; charset=UTF-8',
    success: parseXml,
    error: function (request, status, errorThrown) {
        console.log(request);
        console.log(status);
        console.log(errorThrown);
    }
});

这在Chrome 39中工作得很好,但在IE11& FF32。

在IE中,我收到 parsererror 错误。

了解更多信息:

  • responseText是:{"id":21,"name":"~13~HD3 *G1'F"}
  • readyState:4
  • 状态文本:" OK"
  • 状态:200

最后我的配置文件是:

<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

那么请告诉我为什么?我不是初学者!

真实样本是: My real sample

2 个答案:

答案 0 :(得分:0)

当我在浏览器窗口中加载http://static.persiangulfcup.org/XML/TeamXMLCache/21-%D9%BE%D8%B1%D8%B3%D9%BE%D9%88%D9%84%DB%8C%D8%B3-%D8%AA%D9%87%D8%B1%D8%A7%D9%86.json?_=1417448329770 Firefox时,它显示JSON正常但在文档信息中指出编码是UTF-16LE而不是UTF-8,如帖子中所示。基于此,我认为您需要确保数据是正确的UTF-8编码,或者您需要确保它是使用指示实际编码的内容类型标头提供的。

答案 1 :(得分:0)

感谢@Martin的正确答案。

问题出在我创建json文件的时候。我使用System.Text.Encoding.Unicode代替System.Text.Encoding.UTF8来保存服务器中的json文件。

但我的新问题是你如何理解我的文件是UTF-16LE格式? 请发布作为答案然后我可以将其标记为正确答案。