Javascript 跨域返回非Unicode字符

Javascript 跨域返回非Unicode字符,javascript,unicode,cross-domain,Javascript,Unicode,Cross Domain,我正在使用whateverorigin.org进行跨域调用,并将html返回到div中显示。但是一些非英语的chracter很奇怪(有点方形)。下面是我的代码 $.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/x-www-form-urlencoded; charset=utf-8"}); $.getJSON('http://whateverorigin.org/get?url=' + encodeURICompo

我正在使用whateverorigin.org进行跨域调用,并将html返回到div中显示。但是一些非英语的chracter很奇怪(有点方形)。下面是我的代码

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

如何返回正确的字符。

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


虽然XHR/JSON响应是用UTF-8解码的,
s是用浏览器认为当前页面的编码方式来解释的。因此,如果您没有指定,请使用
内容类型:text/html;charset=utf-8
,则浏览器将不得不猜测。如果它猜测的不是UTF-8(很可能是),那么包含的脚本将被误码。

谢谢,但我的第一行代码应该可以解决这个问题。不是吗?我将第一行代码更改为text/html;charset=utf-8,但非英语字符是方形的。
scriptCharset
不适用于所有浏览器,不幸的是,您必须确保将页面的字符集也设置为匹配。接下来要检查的是您从
https://www.testserver/index.html
本身有一个
内容类型
标题,因为如果没有这个标题,WhateOrigin本身必须猜测该页面的编码,并且可能会猜错。这不是问题,因为当我使用IFrame显示html文件时(来自其他域)字符是正常的。而页面中包含非英语字符的其他部分是正常的。因此whateverorigin.org(api)是正常的这会更改字符。将其放入iframe不是一个典型的测试。如果未指定字符集,则允许浏览器猜测该字符集,这可能会导致与Verorigin的猜测不同的猜测。