在PHP中将字符串编码为带有BOM的UTF-8字符串

使用utf8_encode时如何强制PHP添加BOM? 这是我想要做的:
$zip->addFromString($filename, utf8_encode($xml));
不幸的是(对我来说),结果将不会在开头有BOM标记。     
已邀请:
你有没有尝试过自己添加一个? UTF-8 BOM似乎是
0xEF 0xBB 0xBF
,因此您可以在转换为UTF-8后将其附加到您的字符串。
$utf8_with_bom = chr(239) . chr(187) . chr(191) . $utf8_string;
但请注意。
utf8_encode
想要一个ISO-8859-1字符串。如果您正在使用XML,请确保XML尚未经过UTF-8编码。对文档的评论表明,该功能以各种有趣的方式被破坏,因此除非您知道需要它,否则不应该抛弃它。 请记住,PHP字符串只是愚蠢的,不知道的字节。它们没有附加字符集,因此如果字符串中的数据已经是UTF-8,则无需运行转换。 此外,链接的维基百科文章说:   虽然Unicode标准允许使用UTF-8的BOM,但它不需要或推荐它。字节顺序在UTF-8中没有意义,因此BOM仅用于将文本流或文件标识为UTF-8或者是从具有BOM的另一种格式转换的。 您可能不需要开始使用BOM tapdance。     

要回复问题请先登录注册