美好的一天!
我想我几乎阅读了与PHP和BOM相关的所有问题,但我找不到合适的问题答案。所以我在这里:
我有一个PHP脚本( loader.php ),第一次运行它会生成一个配置文件( _config.php ) 在这个脚本中,我只存储了一些关于第一次调用环境的变量。 如果_config.php文件已经存在,我需要在 loader.php
中一切正常但问题是_config.php需要创建为UTF8。 对我来说,唯一的方法是question,而
file_put_contents(
$folder,
"\xEF\xBB\xBF".$phpCommands
);
当然这会增加BOM并且当我第二次调用 loader.php 时使用require函数时我会读取它,最后会产生众所周知的额外空间问题。页。我尝试使用建议的here方法从页面的最终输出中删除它,但它不会影响结果,可能是因为BOM是通过require而不是通过fopen或类似方式插入的。
我所有的PHP脚本都是UTF-8(没有BOM)。 生成的_config.php是UTF-8" BOM"。
要解决这个问题,我有两个解决方案,但我无法弄清楚如何让它们发挥作用:
有人能帮助我吗?
请不要建议我生成/存储配置的替代策略。它必须以这种方式完成。
非常感谢!
答案 0 :(得分:2)
创建文件时,根本不添加BOM 。它没有任何目的。
最有可能解释你的"它对我有用的唯一方法" 只是一种糟糕的测试方法,不多也不少。意思是,您的文件使用UTF-8创建完全正常,只是您用来确认有缺陷的方法。我在这里猜测你在一些文本编辑器中打开了生成的文件,该编辑器告诉你文件编码是" ANSI"或" ASCII"或者这样。
嗯,纯文本文件不会在任何地方声明其编码。你的文本编辑器只是猜测它的编码。如果文件内容只是简单的英文/ ASCII,则ASCII,ANSI和UTF-8之间没有任何区别。您的文本编辑器只是告诉您一个可能的答案,其中任何答案都同样有效。添加BOM会明确地在编码为UTF-8的文件的开头添加一个提示,编辑器会选择该编码。
这或类似的东西可能是你的整个非问题。