跨域返回不是unicode字符

时间:2014-05-09 10:55:50

标签: javascript unicode cross-domain

我正在使用whateverorigin.org进行跨域调用并将html恢复为显示在div中。但有些不是英文字符很奇怪(一个小方块)。以下是我的代码。

$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/x-www-form-urlencoded; charset=utf-8"});

$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('https://www.testserver/index.html') + '&callback=?', function(data){
            $("div#test").html(data.contents);
        });

如何找回正确的角色。

1 个答案:

答案 0 :(得分:0)

您正在执行JSONP请求,该请求是通过向指向远程内容的当前页面添加<script>元素而不是使用普通的XMLHttpRequest来实现的。

尽管使用UTF-8解码XHR / JSON响应,但使用浏览器认为当前页面编码的任何内容来解释<script>。因此,如果您未使用<meta charset="UTF-8">Content-Type: text/html;charset=utf-8指定,则浏览器必须猜测。如果它猜测UTF-8以外的东西(非常可能),那么包含的脚本将被误解码。