Php $ bom在fopen中不使用模式a / a +

时间:2017-10-31 15:41:51

标签: php fopen byte-order-mark

我想写一个带有UTF-8字符的.csv文件,我正在使用$ bom。

这对于 fopen 和模式c / c +,r / r +或w / w +工作正常,但不适用于模式a / a +。对我来说,重要的是在文件的末尾而不是在开头添加数据。使用此模式a / a +时,无法识别特殊字符。我无法理解这个问题的根本原因。

以下是代码:

$fp = fopen("my_file.csv", "a+");
fputs($fp, $bom = ( chr(0xEF) . chr(0xBB) . chr(0xBF) ) );
fputcsv($fp, array("col1","col2","col3"), ";");
fclose($fp);

1 个答案:

答案 0 :(得分:0)

您不能将Unicode Byte Order Mark放在任何您想要的位置,它必须位于文件的顶部:

  

BOM使用是可选的,如果使用,应出现在文本流的开头