为什么 Firefox 禁用某些站点的“字符编码”菜单?

Cal*_*ius 17 firefox encoding

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

是否可以启用它?

Bob*_*Bob 17

这是由于修复了错误 234628禁用视图>字符编码菜单,当它没有效果/不需要时(例如 XML)

具体来说,如果您查看评论 #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 的十六进制编辑器屏幕截图

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

如果你真的想要,你可以保存文件,去掉有问题的 BOM 并打开文件。或者您可以设置一个代理(Fiddler2 对此很有用),它会在文件到达您的浏览器之前拦截和修改文件。然而,这些并不是真正好的解决方案,而且很可能只会造成更多的问题。如果您有编码问题,最好的办法是联系网站维护人员。无论如何,我们都应该尽可能地转向 Unicode,而不是使用旧的和更有限的编码标准。


D S*_*ter -2

这可能是一个错误。Chromium几年前也遇到过类似的问题。

  • 这不是一个错误。这是[完全是故意的](https://bugzilla.mozilla.org/show_bug.cgi?id=234628)。请注意,[根据此评论](https://bugzilla.mozilla.org/show_bug.cgi?id=234628#c63),菜单在 Chrome 中的类似页面上没有效果(我刚刚测试过,在当前的 Chrome 上)如果您尝试更改它,则会重置为 UTF-8)。 (2认同)