1

我有一个基本的 csv 文件读取,但它无法读取保存在 Mac 平台上的 csv。

我知道问题来自Different operating system families have different line-ending conventions,但我无法修复它。

我找到了一个建议 - 以二进制模式打开文件,但没有用。

代码非常基本:

file opening

$this->fileHandler = fopen($this->filename, 'rb');

read line

$columns = fgetcsv(
    $this->fileHandler,
    $this->length,
    $this->delimiter,
    $this->enclosure
);

我已经用 Notepad++ 打开了这两个文件,似乎 Mac 文件\n在行尾缺少字符,但\r确实存在。

4

2 回答 2

3

在使用之前将auto_detect_line_endings选项设置为:truefgetcsv()

ini_set("auto_detect_line_endings", true);
// rest of your code 
于 2013-04-26T15:24:04.087 回答
0

我不知道这是否适用于 Mac,但我知道当将文本文件从 Windows 移动到某些 Linux 版本时,我可以dos2unix filename在文件上运行命令,它会为我修复格式。也许 Mac 有类似的功能?

编辑:也许这可以帮助:http ://schmeits.wordpress.com/2010/08/26/dos2unix-alternative-those-darn-m-characters/

于 2013-04-26T15:16:05.193 回答