Firefox和UTF-16编码

时间:2011-11-17 14:59:24

标签: firefox encoding utf-16

我正在建立一个编码为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"> ...
你知道原因吗?它应该是编码问题,但我不知道它位于何处......

由于

2 个答案:

答案 0 :(得分:21)

(披露:我是负责Firefox中相关代码的开发人员。)

  

我正在建立一个编码为UTF-16的网站。

请不要。简短的规则是:

  1. 切勿使用UTF-16进行交换。
  2. 始终使用UTF-8进行交换。
  3. 如果违反规则1&amp; 2仍然使用UTF-16,至少使用BOM(右边的)。
  4. 但严重的是,不要违反规则1和2。
  5. 如果您在网页上包含用户提供的内容,则使用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. 页面上的所有HTML,JS和CSS在UTF-8中都更紧凑。
    2. gzip让它与众不同。

答案 1 :(得分:0)

检查服务器是否使用正确的编码发送Content-Type标头。