web-dev-qa-db-ja.com

一部のサイトでFirefoxが「文字エンコーディング」メニューを無効にしているのはなぜですか?

一部のWebサイトで、Firefoxの[表示/文字エンコーディング]メニューが無効になっていることに気づきました。なぜですか?

それを有効にすることは可能ですか?

16
Calmarius

Bug 234628Disable View> Character Codingメニューの修正によるものです/効果がない/不要な場合(例:XML)

具体的には、 コメント#6 を見ると、

UTF-8 BOMがある場合は、BOMをメニューよりも優先させるのが妥当です。

[〜#〜] bom [〜#〜] は、Unicodeでエンコードされたドキュメントのバイトの順序を識別するために使用されます。

指定された理由は、次のように要約できます。

  • Gecko(Firefoxのレンダリングエンジン)は、BOMを有効なHTMLの開始としてレンダリングする他のエンコーディングをサポートしていません(<htmlまたは<!DOCTYPEなど)。

  • 他の主要なブラウザ(IE6 +、WebKitベースの[Chromeなど])も同じことを行います。たとえば、Chrome=でエンコーディングを変更しようとすると、UTF-8にリセットされるだけです。

  • そうしないと、フォーム入力が混乱する可能性があります。


指定したサンプルページは、3つのUTF-8 BOMバイトで始まります。これは、ページを保存してHTMLファイルを16進エディターで開くと確認できます。 BOMはこれをUTF-8ドキュメントとして明確に識別し、他のエンコーディングで開くと正しいHTMLページが生成されません。

Screenshot of hex editor showing BOM

0xEF0xBB0xBF左側のBOM Wikipediaで説明されているように 。右側には、ANSI/ CP1252 としてレンダリングしたときに それがどのように見えるか と表示されています。

本当に必要な場合は、ファイルを保存し、問題のBOMを取り除いて、ファイルを開くことができます。または、ブラウザーに到達する前にファイルをインターセプトして変更するプロキシー(Fiddler2がこれに適しています)をセットアップできます。ただし、これらは本当に良い解決策ではなく、さらに問題が発生する可能性があります。エンコーディングに問題がある場合は、Webサイトの管理者に連絡することをお勧めします。いずれにしても、古い、より制限されたエンコード標準を使用せずに、可能な限りUnicodeに移行する必要があります。

16
Bob