javascript - 跨域返回非unicode字符

标签 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);
        });

如何取回正确的字符。

最佳答案

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

XHR/JSON 响应是使用 UTF-8 解码的,<script>使用浏览器认为当前页面的编码是什么来解释 s。因此,如果您没有指定,请使用 <meta charset="UTF-8">Content-Type: text/html;charset=utf-8 ,那么浏览器将不得不猜测。如果它猜测 UTF-8 以外的内容(很有可能),那么包含的脚本将被错误解码。

关于javascript - 跨域返回非unicode字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23562872/

相关文章:

c - 尝试读取带有表情符号的文本文件并打印出来

html - 增加 Unicode 字符 'BULLET OPERATOR' (U+2219) 的大小

ruby-on-rails - Rails - 使用 Rack 的动态 cookie 域

php - 使用包含包含 php 代码的跨域 - 失败

javascript - window.opener 在 Chrome 中返回跨源错误

javascript - 将 dateTime 字符串解析为 UTC

javascript - 使用 Java/Scala 压缩 CSS/Javascript

c# - Asp.net 下拉列表值在 jquery 对话框中不会更改

mysql - 为什么 MySQL 对待 é 和 e 一样?

javascript - jQuery ajax,附有var的数据字段的名称