Unicode署名BOMによる事故原因の分析

Unicode署名BOMによる事故原因の分析
ここでは、通常ヘッダーとフッターに対して行われるインクルード ファイルを使用している可能性があります。インクルードされたファイルを開くと、ページのプロパティの「Unicode 署名 BOM を含める」という項目にチェックが入っていました。この BOM が事故の原因であるとお伝えします。

ユニコードbom

今日、JS スクリプトを書いているときに別の BOM 事故に遭遇しました。
外部 JS をページに挿入したところ、その中に次の文がありました: $.getJSON("/my/newmsg", function(data){alert(data);}); 他のブラウザでは正常にコンテンツがポップアップ表示されましたが、IE では表示されませんでした。私は 1 時間近く落ち込んでいました。この文が間違って書かれているのではないか、JSON データ形式が間違っているのではないか、私の性格に問題があるのではないかと思いました...
その後、エンコードが間違っているのではないかと疑い、BOM をチェックしてみました。それを削除するとすぐに、暗雲の下から奇跡が現れました。
私は怠け者でめったにブログを更新しませんが、この事件は本当に予想外だったので思いついて記録しなければなりません。JS も BOM による事故を引き起こす可能性があります - -|

Unicode 仕様には BOM の概念があります。
BOMとはByte Order Markの略で、バイトオーダーマークのことです。これは普通のテキストエディタでは見ることができません。ファイルヘッダーと言えるのでしょうか?バイナリエディタでのみ表示されますか?そうかもしれません。
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 を使用してテキスト ファイルのエンコードをマークします。

<<:  パーティショニングを使用して数十億のデータに対する MySQL データ処理を最適化する方法

>>:  Mailtoを使えばHTMLでメールを送るのは簡単

推薦する

CentOS6で定期的にjarプログラムを実行するスクリプトをcrontabで実行する

1. 簡単なJavaプログラムを書く パブリッククラステストシェル{ パブリック静的voidメイン(...

MySQL インデックスのカーディナリティの概念と使用例

この記事では、例を使用して、MySQL インデックス カーディナリティの概念と使用方法を説明します。...

MySQLのイベントスケジューラEVENTを理解する

MySQL のイベント スケジューラ EVENT は、Unix crontab や Windows ...

MySQL 8.0.22 winx64 のインストールと設定方法のグラフィックチュートリアル

MySQL-8.0.22-winx64のデータベースインストールチュートリアルは参考になります。具体...

Spark SQL の 4 つの一般的なデータ ソースの詳細な説明

汎用ロード/書き込みメソッドオプションを手動で指定するSpark SQL の DataFrame イ...

Mysql の mysql.user ユーザー テーブルの詳細な説明

MySQL は、異なるユーザーに異なる権限を割り当てることができるマルチユーザー管理データベースであ...

MySQL マルチバージョン同時実行制御 MVCC の実装

目次MVCCとはMVCC 実装MVCC はファントム リードを解決しますか? MVCCとはMVCC ...

MySQL で遅い SQL 文を見つける方法

MySQL で遅い SQL ステートメントを見つけるにはどうすればよいでしょうか?これは、多くの人を...

MySQLインデックスの失敗の典型的なケース

目次典型的なケース付録: 一般的なインデックス障害の状況典型的なケース次の構造を持つ 2 つのテーブ...

MySQL 8.0.24 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.24のインストールチュートリアルを参考までに紹介します。具体的な内...

mysql 一時テーブルの使用状況の分析 [クエリ結果は一時テーブルに保存できます]

この記事では、例を使用して MySQL 一時テーブルの使用方法を説明します。ご参考までに、詳細は以下...

MySQL の char、varchar、text フィールド タイプの違い

MySQL では、char、varchar、text の各タイプのフィールドはすべて文字タイプのデー...

ウェブフロントエンドエンジニアにおすすめのヒント

まず、Webフロントエンドエンジニアの価値についてお話ししましょう。現在、Web製品のインタラクショ...

MySQL 8.0.12 の詳細なインストールおよびアンインストール チュートリアル

1. MySQL 8.0.12 バージョンのインストール手順。 1. ダウンロードhttps://d...

mysqlはルートユーザーと一般ユーザーを作成し、機能を変更および削除します。

方法1: SET PASSWORDコマンドを使用する mysql -u ルート mysql> ...