UTF-8の問題は、BOMを起こしたら

新機能を追加するため同僚のコードは、サーバーにプッシュされ、事故の原因ログイン失敗は、バック以前のバージョンに落ち、それが正常に使用することができます。

唯一route.phpは、システムへのログオンに失敗したファイルをアップロードしました。

ファイルの2つのバージョンroute.php比較次いで使用KDiff3のは、ファイルは、ヘッドBOMローカルroute.php UTF-8に見出されます

使用後phpstormバッチ変換ファイル形式を問題を解決するために、

項目を選択するには、Ctrl + A

 

 以下のようなので、次の右、またはALT + Fは、BOMを削除選択しました

 

UTF-8と全くBOM 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编码

 

PHPの影響

デザインのPHPは、彼は、ファイルの3つの文字を無視しないことを問題BOMは、BOM UTF-8エンコーディングで始まる考慮していませんでした。

これらのファイルの先頭に、絞り機構によって送られたクッキーは、つまり、誰が出力できないコードを実行前にそれらがある(COOKIEヘッダを送出したPHPの前に送信したため)BOMの、クッキーが送信できませんでしたされています無効

 

ソリューション

通常のファイルを保存し不带BOM的UTF-8たファイル

おすすめ

転載: www.cnblogs.com/niuben/p/11654031.html