ホームページ >バックエンド開発 >PHPの問題 >PHPが文字化けしたtxtを書き込みます

PHPが文字化けしたtxtを書き込みます

王林
王林オリジナル
2019-09-17 13:05:334401ブラウズ

PHPが文字化けしたtxtを書き込みます

PHP を使用しているときに、fwrite または file_put_contents を使用して記述されたかどうかに関係なく、ファイルの文字化けに遭遇したことがある人は多いと思います。最初にエンコードして解決しようとするかもしれませんが、たとえ UTF-8 エンコードに変換したとしても、最終結果は理想的ではないことがよくあります...

それでは、根本的な原因は何でしょうか? ?ヘッド BOM が欠けているだけです (もちろん、これは Js BOM を指すものではありません)。

BOM

BOM について言及されているので、この人のことをあまり知らない学生もいるかもしれません。ここで簡単に説明します。ベテランは読み飛ばしてください。 Windows でメモ帳などのプログラムを使用してテキスト ファイルを UTF-8 形式で保存すると、メモ帳はファイル ヘッダーの前にいくつかの非表示文字 (EF BB BF) を追加します。これはいわゆる BOM (バイト オーダー) です。マーク)。 )。

は、ファイルの冒頭に「EF BB BF」といういくつかの非表示文字が含まれている限り、メモ帳に保存されたファイルに限定されません (16 進数は xEFxBBxBF である必要があり、バイナリでファイルを編集するときに表示されます)。これは規約のようなもので、システムはこれを認識すると、ファイルが UTF-8 でエンコードされていると判断します。

ファイルに BOM がない場合、ユーザーに提示するファイルが文字化けする可能性があるのはこのためです。

PS: 実際、BOM は、HTML の charset 属性と XML のエンコーディング属性として理解でき、これらは識別子として機能します。

解決策:

PHP で BOM を出力するにはどうすればよいですか?

答えは「出力」です。すべてのコンテンツが出力される前:

print(chr(0xEF).chr(0xBB).chr(0xBF));

もちろん、ファイルを生成する場合は、次の 2 つになる可能性があります:

fwrite($file, chr(0xEF).chr(0xBB).chr(0xBF));
file_put_contents($file, chr(0xEF).chr(0xBB).chr(0xBF));

上記のコンテンツは参考用です。

推奨チュートリアル: PHP ビデオ チュートリアル

以上がPHPが文字化けしたtxtを書き込みますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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