PHP でメモ帳に文字化けが書き込まれる
PHP を使用しているときにファイルの文字化けに遭遇したことがある人は多いと思います。書く。最初にエンコードして解決しようとするかもしれませんが、たとえ 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 中国語 Web サイトの他の関連記事を参照してください。