我正在建立一个编码为UTF-16的网站。这意味着每个文件(html,jsp)都以UTF-18编码,我在每个HTML页面的头部设置:
<meta http-equiv="content-type" content="text/html; charset=UTF-16">
我的索引页面由Chrom和IE正确显示。但是,firefox不会呈现索引。它显示2个奇怪的字符和完整的索引页面代码:
��<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-16"> ...
你知道原因吗?它应该是编码问题,但我不知道它位于何处......
由于
答案 0 :(得分:21)
(披露:我是负责Firefox中相关代码的开发人员。)
我正在建立一个编码为UTF-16的网站。
请不要。简短的规则是:
如果您在网页上包含用户提供的内容,则使用UTF-16意味着您的网站至少在旧浏览器中容易受到社交工程XSS的攻击。在旧版本的Firefox(20或更早版本)或基于Presto的Opera版本中尝试this demo。
要避免此漏洞,请使用UTF-8。
哦,哦。 : - )这意味着每个文件(html,jsp)都以UTF-18编码
我在每个HTML页面的头部设置:
<meta http-equiv="content-type" content="text/html; charset=UTF-16">
元标记仅在使用的编码将元标记的字节映射到ASCII的相同字节时才用作内部编码声明。对于UTF-16来说情况并非如此。
你知道原因吗?
在十六进制编辑器中没有完整的响应标头和原始响应主体。如上所述,一般解决方案是始终使用UTF-8并且永远不要在HTTP上使用UTF-16。
如果您的内容使用UTF-16比UTF-8更紧凑的语言,则有两件事:
答案 1 :(得分:0)
检查服务器是否使用正确的编码发送Content-Type
标头。