首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE不能将响应头(来自ajax)打印为utf8

IE不能将响应头(来自ajax)打印为utf8
EN

Stack Overflow用户
提问于 2013-10-31 10:41:43
回答 1查看 310关注 0票数 0

我使用PJAX来更改我的站点上的页面,对于每一个新的页面,我都会发送一个带有一个新的Response Header头的Page-Title。此标头包含的内容可以包含,而IE不正确地输出。在IE的开发工具中,我可以毫无问题地看到Page-Title响应,但是当我使用document.title = ...更新标题时,它会显示错误。

我的响应头看起来如下:Page-Title: Mårtensson

UTF8已经确认,我可以在IE和Chrome工具中看到Content-Type: text/html; chartset=UTF-8

以下是我如何更新标题:

代码语言:javascript
复制
$.ajax({
    url: State.url,
    type: 'get',
    beforeSend: function(xhr){ 
        xhr.setRequestHeader('X-PJAX', true); 
    },
    success: function(resp, status, xhr) { 
        document.title = xhr.getResponseHeader('Page-Title');
        // other code
    }
});

这在Chrome中工作,但在IE中它输出为MÃ¥rtensson。如果我使用decodeURIComponent(escape(document.title = xhr.getResponseHeader('Page-Title')));,它在IE中输出很好,但是在Chrome中我得到了Uncaught URIError: URI malformed

如何使它在两种浏览器中工作?

解决方案

我通过在字符串上运行htmlentities来修正它,然后将它作为响应头输出。然后,在将其设置为标题之前,我先对其进行在javascript中解码字符串

代码语言:javascript
复制
document.title = decodeEntities(xhr.getResponseHeader('Page-Title'));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-31 10:58:29

您可以检查专门处理此问题的RFC 5987。基本上,请记住,如果您在HTTP头字段中使用UTF-8字符,那么您是独立的,不同的浏览器将有不同的行为。

如果确实需要为此使用标题,则应该使用某种类型的转义(服务器端)和取消转义(客户端)来使标题与ISO-8859-1字符集相匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19704299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档