我需要提供一个纯文本文件供下载。文本文件需要进行 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 是错误的。
我该怎么做?
编辑:按要求提供十六进制内容。我只是将文本设为“某些文本”,然后得到:
C3 AF C2 BB C2 BF 53 4F 4D 45 20 54 45 58 54
将“某些文本”保存为带有 BOM 的 UTF-8 会产生:
EF BB BF 53 4F 4D 45 20 54 45 58 54