首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Microsoft Excel破坏.csv文件中的变音符号?

Microsoft Excel破坏.csv文件中的变音符号?
EN

Stack Overflow用户
提问于 2008-10-01 05:07:07
回答 21查看 152.7K关注 0票数 194

我正在以编程方式将数据(使用PHP5.2)导出到.csv测试文件中。

示例数据:Numéro 1 (注意重音e)。数据为utf-8 (无前置物料清单)。

当我在MS Excel中打开此文件时,它显示为Numéro 1

我可以在正确显示它的文本编辑器(UltraEdit)中打开它。UE报告角色是decimal 233

我如何导出.csv文件中的文本数据,以便 MS 将正确地呈现它,最好不强制使用导入向导或非默认向导设置?

EN

回答 21

Stack Overflow用户

发布于 2008-11-24 17:11:19

前缀BOM (\uFEFF)适用于我(Excel 2007),因为Excel将该文件识别为UTF-8。否则,保存它并使用导入向导是可行的,但不太理想。

票数 42
EN

Stack Overflow用户

发布于 2009-10-30 16:50:24

以下是我在将Microsoft Excel发送给用户时在项目中使用的PHP代码:

  /**
   * Export an array as downladable Excel CSV
   * @param array   $header
   * @param array   $data
   * @param string  $filename
   */
  function toCSV($header, $data, $filename) {
    $sep  = "\t";
    $eol  = "\n";
    $csv  =  count($header) ? '"'. implode('"'.$sep.'"', $header).'"'.$eol : '';
    foreach($data as $line) {
      $csv .= '"'. implode('"'.$sep.'"', $line).'"'.$eol;
    }
    $encoded_csv = mb_convert_encoding($csv, 'UTF-16LE', 'UTF-8');
    header('Content-Description: File Transfer');
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment; filename="'.$filename.'.csv"');
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: '. strlen($encoded_csv));
    echo chr(255) . chr(254) . $encoded_csv;
    exit;
  }

更新:文件名改进并修复了正确的长度计算。感谢TRiG@ivanhoe011

票数 32
EN

Stack Overflow用户

发布于 2013-08-22 16:26:09

Excel版本(2003 + 2007)和文件类型的所有组合的答案

这里的大多数其他答案只涉及其Excel版本,不一定会对您有所帮助,因为它们的答案可能不适用于您的Excel版本。

例如,添加BOM表字符会导致自动识别列分隔符时出现问题,但并不是每个Excel版本都会出现问题。

有3个变量决定它是否适用于大多数Excel版本:

  • Encoding
  • BOM character presence
  • 单元格分隔符

SAP的某个坚忍的人尝试了每种组合,并报告了结果。最终结果是什么?使用带有物料清单和制表符的UTF16le作为分隔符,使其在大多数Excel版本中都能工作。

你不相信我?我也不会,但请在这里阅读并流泪:http://wiki.sdn.sap.com/wiki/display/ABAP/CSV+tests+of+encoding+and+column+separator

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/155097

复制
相关文章

相似问题

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