首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用fputcsv将BOM添加到CSV文件

使用fputcsv将BOM添加到CSV文件
EN

Stack Overflow用户
提问于 2014-09-05 20:41:48
回答 1查看 13K关注 0票数 13

我有一个简单的CSV文件正在生成,其中包括外国字符。我已经注意到,如果我不包括字节顺序标记,则外部字符不会在Excel中正确显示(但当存在BOM时,它们显示正常)。

在第一次创建文件时,如何将BOM添加到文件的开头?我尝试了以下方法,但不起作用:-/

代码语言:javascript
复制
function processForm($competition, $competitionEntry) {
    $BOM = "\xEF\xBB\xBF"; // UTF-8 BOM

    $filename = $competition->ID.".csv";
    $file = "entries/".$filename;     

    $fields = array_keys($competitionEntry);
    $submittedForm = $competitionEntry;

    if(file_exists($file)) {
        $fp = fopen($file, 'a');
        if($fp && 
            fputcsv($fp, $submittedForm) && 
            fclose($fp)) {
            return true;
        } 
    } else { // CREATE NEW FILE
        $fp = fopen($file, 'w');
        if($fp && 
            fputcsv($fp, $BOM) && // WRITE BOM TO FILE   
            fputcsv($fp, $fields) &&
            fputcsv($fp, $submittedForm) &&
            fclose($fp)) {     
            return true;
        } 
    }
    return false;
}
EN

Stack Overflow用户

回答已采纳

发布于 2014-09-09 01:31:27

感谢Mark Baker的回答:

我需要使用fwrite()来添加BOM,而不是fputcsv()。

工作版本如下所示:

代码语言:javascript
复制
if(file_exists($file)) {
    $fp = fopen($file, 'a');
    if($fp && 
        fputcsv($fp, $submittedForm) && 
        fclose($fp)) {
        return true;
    } 
} else {
    $fp = fopen($file, 'w');
    fwrite($fp, $BOM); // NEW LINE
    if($fp &&    
        fputcsv($fp, $fields) &&
        fputcsv($fp, $submittedForm) &&
        fclose($fp)) {     
        return true;
    } 
}

谢谢,马克!

票数 27
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25686191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档