首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firefox和UTF-16编码

Firefox和UTF-16编码
EN

Stack Overflow用户
提问于 2011-11-17 22:59:24
回答 2查看 7.8K关注 0票数 4

我正在构建一个使用UTF-16编码的网站。这意味着每个文件(html、jsp)都是用UTF-18编码的,并且我在每个HTML页面的头部设置:

代码语言:javascript
复制
<meta http-equiv="content-type" content="text/html; charset=UTF-16">

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

代码语言:javascript
复制
��<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-16"> ...

你知道原因吗?它应该是一个编码的问题,但我不知道它在哪里...

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-08-14 20:14:27

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

我正在建立一个使用

-16编码的网站。

请不要这样做。简短的规则是:

对于interchange.

  • Always,请不要使用UTF-16。对于interchange.

  • If,请使用UTF-8。如果您违反了规则1和2,但仍然使用UTF-16,请至少使用
  1. (正确的)。
  2. ,但严肃点,请不要违反规则1和2。

如果您在页面上包含用户提供的内容,那么使用UTF-16意味着您的站点很容易受到社会工程XSS的攻击,至少在较旧的浏览器中是如此。在火狐的老版本( 20或更老的版本)或基于Presto的Opera版中尝试this demo

要避免该漏洞,请使用UTF-8。

这意味着每个文件(

,jsp)都是用UTF-18编码的。

啊哦。:-)

我和

在每个超文本标记语言页面的头部设置了:<meta http-equiv="content-type" content="text/html; charset=UTF-16">

只有当所使用的编码将元标记的字节映射到与ASCII相同的字节时,元标记才能用作内部编码声明。UTF-16并非如此。

你知道原因吗?

在十六进制编辑器中没有完整的响应头和原始响应体。如上所述,一般的解决方案是始终使用UTF-8,从不在HTTP上使用UTF-16。

如果您的内容使用的是UTF-16比UTF-8更紧凑的语言,则需要注意两点:

  1. 页面上的所有超文本标记语言、JS和CSS格式的UTF-8格式更加紧凑。
  2. gzip消除了这种差异。
票数 23
EN

Stack Overflow用户

发布于 2011-11-17 23:09:24

检查服务器是否发送了编码正确的Content-Type报头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8169278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档