为什么Firefox在某些网站上禁用“字符编码”菜单?


16

对于某些网站,我注意到Firefox的“视图/字符编码”菜单已禁用,为什么?

可以启用它吗?


一个这样的站点的示例是haszon.hu
Calmarius 2014年

可能与错误832910有关,该错误要求在某些站点上禁用编码菜单以防止攻击(该漏洞是特定于Android 且未解决的漏洞;我正在寻找与桌面等效的漏洞)。
鲍勃

Answers:


16

这是由于对Bug 234628进行了修复,当它无效/不必要(例如XML)时禁用了View> Character Coding菜单

具体来说,如果您查看第63条评论

对于存在UTF-8 BOM的情况,让BOM优先于菜单是有意义的

BOM被用来识别一个Unicode编码的文件中的字节顺序。

给出的原因可以总结为:

  • Gecko(Firefox的呈现引擎)不支持将BOM呈现为有效HTML开头(<html或其他)的任何其他编码<!DOCTYPE

  • 其他主要浏览器(IE6 +,基于WebKit的[Chrome等])也做同样的事情。例如,如果您尝试在Chrome上更改编码,则只需将其重置为UTF-8。

  • 否则可能会混淆表单输入。


您提供的示例页面以三个UTF-8 BOM字节开头。如果保存页面并在十六进制编辑器中打开HTML文件,则可以看到此信息。BOM肯定地将其标识为UTF-8文档,并且以任何其他编码打开它都不会产生正确的HTML页面。

显示BOM的十六进制编辑器的屏幕截图

如Wikipedia所述,您可以0xEF 0xBB 0xBF在左侧看到BOM 。在右侧,它显示为ANSI / CP1252时的外观

如果确实需要,可以保存文件,剥离有问题的BOM,然后打开文件。或者,您可以设置一个代理(Fiddler2很好用),该代理将在文件到达浏览器之前对其进行拦截和修改。但是,这些并不是真正好的解决方案,并且可能会带来更多问题。如果遇到编码问题,最好的办法是与网站维护者联系。无论如何,我们都应该尽可能地改用Unicode,而不是使用更旧,更有限的编码标准。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.