Php 两个看似相同的CSV文件,只有一个有效

Php 两个看似相同的CSV文件,只有一个有效,php,csv,Php,Csv,更新到PHP5.3后,我们的一个系统出现了一个有趣的bug。它解析csv文件,第一步是向用户显示他们上传的内容,以便在确认之前进行检查 然而,我们遇到了一个错误,一些文件上传了,但没有被读取。奇怪的是,如果我们从这些文件中获取数据,复制并粘贴到记事本中,并保存为.csv文件,它就可以上传了 我的第一个想法可能与人们从特定程序创建csv文件有关?我注意到不起作用的那个(即使它包含相同的数据)比我们从中复制和粘贴的那个要小一些 非常感谢您的帮助。听起来好像一个有回车+换行,而另一个只有换行(或者是回

更新到PHP5.3后,我们的一个系统出现了一个有趣的bug。它解析csv文件,第一步是向用户显示他们上传的内容,以便在确认之前进行检查

然而,我们遇到了一个错误,一些文件上传了,但没有被读取。奇怪的是,如果我们从这些文件中获取数据,复制并粘贴到记事本中,并保存为.csv文件,它就可以上传了

我的第一个想法可能与人们从特定程序创建csv文件有关?我注意到不起作用的那个(即使它包含相同的数据)比我们从中复制和粘贴的那个要小一些


非常感谢您的帮助。

听起来好像一个有回车+换行,而另一个只有换行(或者是回车?)


或者它有不同的编码:ASCII和UTF-16听起来像一个有回车+换行,另一个只有换行(或者是回车?)


或者它有不同的编码:ASCII与UTF-16,CSV文件的编码是否相同

也许有些在一开始就有UTF-8 BOM,或者其他类似于UTF-16的BOM


或者,行尾字符可能有所不同-邪恶可以只使用LF,而善良可以使用CR+LF。

CSV文件的编码是否相同

也许有些在一开始就有UTF-8 BOM,或者其他类似于UTF-16的BOM


或者,行尾字符可能会有所不同-邪恶可以只使用LF,而善良可以使用CR+LF。

如果文件看起来相同,但大小不同,则可能是文件之间的换行符不同


您可以使用记事本以外的文本编辑器(例如)打开文件以确认这一点

如果文件看起来相同,但大小不同,则可能是文件之间的换行符不同


您可以使用除记事本(例如)以外的某种形式的文本编辑器打开文件以确认这一点

检查文件编码。默认情况下,记事本保存为ANSI字符集。当Excel解析一个CSV(ANSI),而不是另一个UTF8中的字段时,我注意到了这一点。在UTF8文件中,它是一个字段,包括逗号。只有当我保存为ANSI时,Excel才会解析CSV。PHP也可能发生类似的情况


编辑:如果事实证明是这样,您可以实现一个过程来“清理”传入的CSV文件。实际上,在PHP中执行操作就像复制然后粘贴一样。如果您正在处理从客户端上载的文件,则很难坚持使用特定的编码,但是,您应该能够转换传入的数据。

检查文件编码。默认情况下,记事本保存为ANSI字符集。当Excel解析一个CSV(ANSI),而不是另一个UTF8中的字段时,我注意到了这一点。在UTF8文件中,它是一个字段,包括逗号。只有当我保存为ANSI时,Excel才会解析CSV。PHP也可能发生类似的情况


编辑:如果事实证明是这样,您可以实现一个过程来“清理”传入的CSV文件。实际上,在PHP中执行操作就像复制然后粘贴一样。如果您要处理从客户端上载的文件,则很难坚持使用特定的编码,但是,您应该能够转换传入的数据。

谢谢,现在我只需对其进行清理。谢谢,现在我只需对其进行清理。Mac使用CR,*nix(包括Mac OS X)使用LF,Windows使用CR+LF。换句话说,你刚才说Linux、Unix和Mac是邪恶的,Windows是好的。Mac使用CR,*nix(包括Mac OS X)使用LF,Windows使用CR+LF。换句话说,你刚才说Linux、Unix和Mac是邪恶的,Windows是好的。