ホームページ  >  記事  >  バックエンド開発  >  UTF-8 BOM によって引き起こされるスタイルの混乱に対する解決策

UTF-8 BOM によって引き起こされるスタイルの混乱に対する解決策

WBOY
WBOYオリジナル
2016-07-25 09:05:28961ブラウズ
UTF-8 は、Web アプリケーションでよく使用される Unicode 文字エンコード方式です。UTF-8 を使用する利点は、ANSII コードの場合、エンコード長が 1 バイトであるため、大幅に節約できることです。 ASCII 文字セットを使用して多数の Web ページを送信する場合のネットワーク帯域幅の減少。

utf-8 は、Web アプリケーションでよく使用される Unicode 文字エンコード方式です。utf-8 を使用する利点は、ANSII コードの場合、エンコード長が 1 バイトであることです。 ASCII 文字セットを使用して多数の Web ページを送信する場合、帯域幅を大幅に節約できます。

UTF-8 エンコーディングを使用して Web ページを作成すると、BOM (バイト オーダー マーク) の問題により、Web ページに不明な空白行や文字化けが表示されることがよくあります。 これは、UTF-8 エンコードが bom に必須ではないためです。したがって、UTF-8 エンコードでは、ファイルを保存する際の処理方法が異なります。たとえば、一部のブラウザ (FireFox) はすべての utf-8 bom を自動的にフィルタリングできますが、一部のブラウザ (IE) は 1 つの bom のみをフィルタリングできます (なぜ一度なのか? 複数のファイルをインクルードするとこの問題が発生します)。

edi​​tplus または他のエディタを使用して、ファイル内の BOM 署名を削除し、ページを更新すると、スタイルが通常になります。

BOM に関する説明:

UCSエンコーディングには「ZERO WIDTH NO-BREAK SPACE」という文字があり、そのエンコーディングはFEFFです。 FFFE は UCS には存在しない文字ですので、実際の送信では出現しないはずです。 UCS 仕様では、バイト ストリームを送信する前に文字「ZERO WIDTH NO-BREAK SPACE」を送信することを推奨しています。このように、受信機が FEFF を受信した場合は、バイト ストリームがビッグ エンディアンであることを示し、FFFE を受信した場合は、バイト ストリームがリトル エンディアンであることを示します。したがって、「ZERO WIDTH NO-BREAK SPACE」という文字は BOM とも呼ばれます。

UTF-8 はバイト順序を示すために BOM を必要としませんが、BOM を使用してエンコード方式を示すことができます。文字「ZERO WIDTH NO-BREAK SPACE」の UTF-8 エンコーディングは EF BB BF です。したがって、受信側が EF BB BF で始まるバイト ストリームを受信すると、それが UTF-8 でエンコードされていることを認識します。

Windows は BOM を使用してテキスト ファイルのエンコード方法をマークします

UTF-8 でエンコードされたファイルでは、BOM は 3 バイトを占めます。メモ帳を使用してテキスト ファイルを UTF-8 エンコードで保存し、UE でファイルを開いて 16 進編集状態に切り替えると、先頭に FFFE が表示されます。これは、UTF-8 でエンコードされたファイルを識別するための良い方法です。ソフトウェアでは、BOM を使用して、ファイルが UTF-8 でエンコードされているかどうかを識別します。また、多くのソフトウェアでは、読み取るファイルに BOM が必要です。ただし、BOM を認識できないソフトウェアはまだ多くあります。 Firefox について勉強していたとき、Firefox の初期バージョンでは拡張機能に BOM を含めることができなかったが、Firefox 1.5 以降のバージョンでは BOM をサポートし始めたことを知りました。さて、PHP も BOM をサポートしていないことがわかりました。

PHP は設計時に BOM の問題を考慮していませんでした。UTF-8 でエンコードされたファイルの先頭にある BOM の 3 文字は無視されません。 または

海外の英語のプラグインとテンプレートは通常 ASCII エンコードを使用しており、BOM がありません。作成者の無知により問題が発生するのは国内のプラグインとテンプレートだけです。

また、テンプレートを変更する際、出力ページはUTF-8エンコードを使用するため、テンプレートを変更する際に漢字が追加された場合、この時点でエディターで通常表示するためにファイルをUTF-8エンコードに変換する必要があります。 BOM を追加すると、これらの 3 文字がページ上に出力されます。表示効果はブラウザによって異なります。通常は空白行または文字化けします。 興味があるかもしれない記事: phpの例: ファイルの先頭にあるBOM情報を検出してクリアします BOMヘッダー情報を一括削除するためのPhp実装コード phpでBOMを削除するためのコードを共有する ページ内の BOM データを PHP でフィルタリングする簡単な例 phpファイルにBOMヘッダーコードがあるかどうかを検出します PHPファイルのBOMをバッチクリアする方法 phpファイルのBOM機能をチェックしてクリアします BOMとDOMの違いの分析 UTF-8エンコードにおけるBOMの検出と削除について



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。