在使用utf8_encode时,如何强制PHP添加物料清单?
这是我想要做的:
$zip->addFromString($filename, utf8_encode($xml));
不幸的是(对我来说),结果在开始时不会有BOM标记。
发布于 2011-04-09 08:26:52
你试过自己添加一个吗?
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标准允许使用
-8格式的物料清单,但并不要求也不推荐这样做。字节顺序在UTF-8BOM中没有意义,因此只用于标识文本流或文件为UTF-8,或者它是从具有BOM的另一种格式转换而来的。
一开始,您可能不需要费心使用BOM抽头舞。
https://stackoverflow.com/questions/5601904
复制相似问题