Firefox和UTF-16编码

use*_*112 4 firefox encoding utf-16

我正在建立一个编码为UTF-16的网站.这意味着每个文件(html,jsp)都以UTF-18编码,我设置在每个HTML页面的头部:

<meta http-equiv="content-type" content="text/html; charset=UTF-16">
Run Code Online (Sandbox Code Playgroud)

我的索引页面由Chrom和IE正确显示.但是,firefox不会呈现索引.它显示2个奇怪的字符和完整的索引页面代码:

??<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-16"> ...
Run Code Online (Sandbox Code Playgroud)

你知道原因吗?它应该是编码问题,但我不知道它位于何处......

谢谢

hsi*_*nen 21

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

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

请不要.简短的规则是:

  1. 切勿使用UTF-16进行交换.
  2. 始终使用UTF-8进行交换.
  3. 如果您违反规则1和2并仍然使用UTF-16,至少使用BOM(右侧).
  4. 但严重的是,不要违反规则1和2.

如果您在网页上包含用户提供的内容,则使用UTF-16意味着您的网站至少在旧浏览器中容易受到社交工程XSS的攻击.在旧版本的Firefox(20或更早版本)或基于Presto的Opera版本中试用此演示.

要避免此漏洞,请使用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让它与众不同.