excel utf-8 csv导出和分隔符

所以我做了这个(我使用Drupal 6):

while(@ob_end_clean()); drupal_set_header("Content-type: text/csv;"); drupal_set_header("Cache-Control: no-store, no-cache"); drupal_set_header("Content-Disposition: attachment; filename=translations.csv"); print chr(255) . chr(254) . mb_convert_encoding($output, 'UTF-16LE', 'UTF-8'); exit; 

导出utf-8字符的CSV。 当我导入到excel中时,utf-8字符将正确显示。

问题是,excel不会parsing分隔符,即逗号将全部显示在一列中,而不是用作打开文件时的分隔符。

有没有办法做到这一点,当我打开它,逗号将被用作分隔符?

csv中的一行代码如下:

 $output .= '"'.str_replace('"', '""', $id).'","'.str_replace('"', '""', $source).'","'.str_replace('"', '""', $translation) . '"'; 

我试图使用制表符\ t而不是逗号作为分隔符,但同样的事情会发生,即。 选项卡不会被用作文件打开时的分隔符

要使用逗号作为默认CSV分隔符,需要更改相应的Windows区域设置选项:

进入控制面板 – >区域和语言选项(或date,时间和区域选项 – >在某些机器上的区域和语言选项) – >点击自定义button。 在打开的对话框中,您将看到“ List separator ”选项,您可以在其中将逗号更改为不同的字符 – >单击Apply然后确定,然后再次Apply。

请注意以下事项:

  1. 此设置默认用于导入和导出CSV文件。
  2. 您应该使用File > Open ,非Data > Import External Data > Import Data...打开CSV文件,或者只需在资源pipe理器中双击任何CSV文件,它将在Excel中应用默认分隔符打开。

阅读更多:

如果您使用Excel 2007,那么如果您先打开Excel,则可以转到“ Data选项卡,然后select“ From Text

在浏览器浏览器中select您的.csv文件,然后出现文本向导。 这给你更多的步骤和选项来控制它正在寻找关于拆分列等。

旧版本的Excel也支持它,但我不能确定它在同一个地方,我认为它是。

试试这个向导,看看它是如何分类你的问题。

对于使用x-separated-values的Excel支持Unicode,请使用制表符分隔的UTF-16 Little-Endian(Excel 另存为… > Unicode文本(* .txt)时生成的内容 )。

如果你不这样做,你会遇到像你遇到的问题。

请参阅: Excel和Unicode