7

ダウンロード用のプレーン テキスト ファイルを提供する必要があります。テキスト ファイルは UTF-8 でエンコードする必要があり、BOM が存在する必要があります。PHP ファイルを BOM なしの UTF-8 として保存し、次のヘッダーを送信します。

header('HTTP/1.1 200 OK');
header('Content-Type: text/plain; charset=utf-8');
header('Content-Disposition: attachment; filename="test.txt"');

ヘッダーの送信を妨げるため、BOM なしでスクリプトを保存します。そこで、次の方法で BOM を手動で入れてみました。

echo chr(239).chr(187).chr(191);

それから私は私のテキストを出しました。マニュアル BOM がなければ、Notepad++ のようなエディタはファイルが ANSI エンコードされていることを認識します。想定されるマニュアル BOM を使用すると、UTF-8 として認識されますが、次の文字が含まれます。



開始時。したがって、ヒューリスティックによってUTF-8であることが検出され、手動のBOMが間違っていると思います。

どうすれば正しくできますか?

編集:要求どおりの HEX コンテンツ。テキスト「SOME TEXT」を作成しただけで、次のようになります。

C3 AF C2 BB C2 BF 53 4F 4D 45 20 54 45 58 54

「SOME TEXT」を BOM 付きの UTF-8 として保存すると、次のようになります。

EF BB BF 53 4F 4D 45 20 54 45 58 54
4

2 に答える 2

1

表示されているのは、BOM の個々のバイトを IOS-8859-1 として解釈し、結果を UTF-8 でエンコードした結果です。なぜこれが起こるのかについては、chr()関数を疑っています-代わりにcharリテラルを使用してみてください。

echo "\xEF\xBB\xBF";
于 2012-10-24T20:57:59.410 に答える
0

mbstring 拡張機能の設定を確認してください (出力を自動エンコードするように設定できます)。

; This directive specifies the regex pattern of content types for which mb_output_handler()
; is activated.
; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml)
; mbstring.http_output_conv_mimetype=

"\xEF\xBB\xBF"&の両方chr(239).chr(187).chr(191)を使用して BOM を生成できます。これらをfile_put_contents()自分で試すことができます。

于 2012-10-24T21:25:33.967 に答える