今日、PHP が空白の非表示文字 65279 を出力するという問題を CSDN で発見しました。オンラインで検索したところ、出力時にファイルを UTF-8 エンコードとしてマークするために 65279 文字が PHP によって使用されていることがわかりました。その結果、クライアントは ajax を使用して戻り値を取得するときに文字列を照合できません。
php の非表示文字 65279 は次のように説明されています:
UTF-8 でエンコードされたファイルは、BOM なしと BOM の 2 つの形式に分けることができます。
BOMとは何ですか?
「EF BB BF」 この3バイトはBOMと呼ばれ、正式名称は「Byte Order Mard」です。 BOM は通常、ファイルが UTF-8 ファイルであることを示すために utf8 ファイルで使用されますが、BOM の本来の目的は utf16 で使用されることです。
PHPでUTF-8ファイルを出力するとBOMが出力されるため、PHPでUTF-8を使用するにはBOMヘッダのないUTF-8ファイルを使用する必要があります。
一般的に使用されるテキスト編集ソフトウェアは、UTF-8 ファイルを保存するさまざまな方法をサポートしているため、使用する場合は特に注意する必要があります。
例:
1. ウルトラエディットを使用する場合、保存時に「UTF-8」と「UTF-8 - BOM なし」の 2 つのオプションがあります。
2. ウィンドウのメモ帳に BOM 付きのファイルが保存されます。
3. EditPlus ソフトウェアのバージョンによって、UTF-8 保存のサポートが異なります。たとえば、バージョン 2.31 は BOM なしで保存し、バージョン 2.11 は BOM ありで保存します。
utf-8 ファイルヘッダーを削除する方法:
1. ウルトラエディットを使用してファイルとして保存し、「UTF-8 - No BOM」を選択します
2. サイトのルート ディレクトリで実行される非常に便利な PHP プログラムは、ディレクトリ内のすべての UTF-8 ファイルの BOM ヘッダーを削除します。コードは次のとおりです。
手動でデコードすると、正常に動作します。これは、ファイルで文字列エンコーディングを指定していないためです
header("Content-type: text/html;charset=utf8"); この文を PHP ファイルの先頭に追加してください
PHP が BOM ヘッダーを処理するときにエラーが発生することがあります。これは、header や session_start などの関数を使用するときにファイルが出力されたというエラーを引き起こす可能性があります。ほとんどの場合、これは BOM ヘッダーが送信されることが原因です。 。 php の観点からはスペースになるためです。したがって、BOM フリー形式を使用してください。