javascript - AJAX UTF-8 内容在 ISO-8859 编码页面上正确显示

标签 javascript jquery html ajax encoding

所以我有一个网页,根据返回其内容的 HTTP header 以 ISO-8859 进行编码。我返回文本内容😳😳😳😳,正如预期的那样,它被 ISO 编码破坏了。

但是,当我进行返回相同文本内容😳😳😳😳的 JSONP AJAX 调用并将其插入到页面上时,这些表情符号会正确显示!值得注意的是,AJAX 调用缺少编码类型 header ,因为其 Content-Type header 只是 text/javascript。

这是怎么回事?我的 Chrome 浏览器是否采取了某种巧妙的技巧来确保 AJAX 内容正确显示?

如果重要的话,我正在使用 jQuery 库来执行 AJAX 调用。

最佳答案

这主要是猜测,因为我没有广泛研究它,但据我了解,浏览器将 HTML 文本内容转换为某种内部表示形式(也许是 UTF-16,我不知道)。我发现有提到here .

他们使用服务器( Content-Type header )、HTML 本身( <meta charset=... 等)或用户(通过显式设置页面的编码)提供的线索来做到这一点。

任何被插入 DOM 的文本内容(例如使用 AJAX 请求检索的文本内容)都会经历相同的转码。换句话说,浏览器不使用页面其余部分的编码(或者可能仅在它完全不知道编码何时使用的情况下),而是使用服务器在 AJAX 响应中提供的编码(或者如果服务器未设置,则使用默认值)。

因此,在内部,所有内容都会转换为相同的编码,这就是为什么您可以使用 JS 将 UTF-8 编码的数据注入(inject)到 ISO-8859 编码的页面中,并且它可以工作。

关于javascript - AJAX UTF-8 内容在 ISO-8859 编码页面上正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42651415/

相关文章:

javascript - 在不同的浏览器中打开链接

php - 将 PHP 生成的 JS 变量发送到 Google map 的 JS 函数

c# - JavaScript 中的动态 Html.ActionLink?

php - 无效参数和非法偏移量

javascript - 如何在IE8中捕获后退按钮点击事件?

javascript - 如何从Firebug的控制台访问Firebug的信息?

javascript - jQuery Click 事件代码无限重复

javascript - 无法获取 'this' 变量的 ID

jquery - 使用 jQuery-twitter Bootstrap 按钮添加/删除类到 anchor 标记?

html - HTML 标签下的额外空格