Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE无法将响应标题(来自ajax)打印为utf8_Javascript_Utf 8_Header - Fatal编程技术网

Javascript IE无法将响应标题(来自ajax)打印为utf8

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

我使用PJAX在我的站点上更改页面,对于每个新页面,我都会发送一个带有一个新的
页面标题的
响应标题
。此标头包含的内容可能包含åäö,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对其进行解码,如前所述。