正如我猜,大多数人都知道我们对文件进行了以下编码:
UTF-8通过在文件开头添加三个字符来识别,但这些字符会导致PHP语言中的一些问题,如您所知 所以我们使用
这是我的问题: 我们如何使用frwite()或任何其他函数(无关紧要)编写(UTF-8无BOM)编码的新文件(使用PHP)
(我不是在询问编辑器设置>我问的是用php函数创建一个文件)
答案 0 :(得分:2)
我担心你在问题中误传了UTF-8和ANSI。
UTF-8 不要求在开始时有BOM。没有“UTF-8无BOM”编码这样的编码。只有“UTF-8”。我已经处理了数百万(当然,数十万)的UTF-8文件,并且从一开始就没有遇到过BOM。
根据the Unicode standard,在UTF-8中,物料清单既不需要也不推荐:
2.6编码方案
对于UTF-8既不要求也不建议使用BOM,但在使用BOM的其他编码形式或将BOM用作UTF-8签名的UTF-8数据转换的上下文中可能会遇到。有关详细信息,请参阅第16.8节,特价中的“字节顺序标记”小节。
此外,没有“ANSI”这样的编码!
IANA provides为字符集名称提供给“ANSI”的最接近的事情是“ANSI_X3.4-1968”和“ANSI_X3.4-1986”,它们都是“US-ASCII”的旧版别名“(首选MIME名称),128位代码点的7位编码。没有其他官方字符集名称在其名称中包含“ANSI”。
我不确定您正在运营的环境,但它似乎已经导致您进入一些非标准的命名,期望和标准。
它可能是...... Windows™? ☹
编辑:刚刚找到this answer关于这个错误的来源。
答案 1 :(得分:0)
只需在PhP
中创建一个文件,然后添加普通文本即可。它对我有用。
/*creating the page account.php*/
$archivo="account.php";
$myFile = "$archivo";
$fh = fopen($myFile, "wb") or die("can't open file");
fwrite($fh,"$archivo");//In this case I am writing the name of the file inside of it.
fclose($fh);
答案 2 :(得分:-1)
如果是“没有BOM”,那么它只是文件中的正常字节。
它们都只是数字,从0到255,或0x00到0xFF,作为文件中的字节序列。你如何解释它们取决于你或程序。
答案 3 :(得分:-3)
我找到了一个解决方案,你可以打开/创建文件并使用它在开头写一个签名,以便将其设置为UTF8:
$fp = fopen("filename.ext","wb");
fwrite($fp,pack("CCC",0xef,0xbb,0xbf));
我已经探究过这个并且效果很好!
我发现它here