Javascript IE无法将响应标题(来自ajax)打印为utf8
我使用PJAX在我的站点上更改页面,对于每个新页面,我都会发送一个带有一个新的Javascript IE无法将响应标题(来自ajax)打印为utf8,javascript,utf-8,header,Javascript,Utf 8,Header,我使用PJAX在我的站点上更改页面,对于每个新页面,我都会发送一个带有一个新的页面标题的响应标题。此标头包含的内容可能包含åäö,IE输出的内容不正确。在IE的开发者工具中,我可以毫无问题地看到页面标题响应,但当我使用document.Title=…更新标题时,它显示错误 我的响应标题如下所示: 页面标题:Mårtensson UTF8已确认,我可以看到内容类型:text/html;IE和Chrome开发工具中的chartset=UTF-8 以下是我更新标题的方式: $.ajax({ u
页面标题的响应标题
。此标头包含的内容可能包含åäö,IE输出的内容不正确。在IE的开发者工具中,我可以毫无问题地看到页面标题
响应,但当我使用document.Title=…
更新标题时,它显示错误
我的响应标题如下所示:
页面标题:Mårtensson
UTF8已确认,我可以看到内容类型:text/html;IE和Chrome开发工具中的chartset=UTF-8
以下是我更新标题的方式:
$.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
。如果我使用解码组件(escape(document.title=xhr.getResponseHeader('Page-title'))代码>它在IE中输出良好,但在Chrome中我得到未捕获的URIError:URI格式错误
如何让它在两种浏览器中都工作
解决方案
在将其输出为响应头之前,我通过在字符串上运行来修复它。然后,在我将其设置为标题之前
document.title = decodeEntities(xhr.getResponseHeader('Page-Title'));
您可以检查是否专门处理此问题。基本上,请记住,如果您在HTTP头字段中使用UTF-8字符,那么您就只能依靠自己,不同的浏览器将有不同的行为
如果您确实需要为此使用标题,则应使用某种转义(服务器端)和取消转义(客户端)使您的标题适合ISO-8859-1字符集。在文档中显示非ASCII字符也可能有问题。无论数据来自何处,标题。谢谢。现在,我在字符串上运行htmlentities
,然后将其输出到标头,然后使用javascript对其进行解码,如前所述。