类似的问题:
PHP中fgetcsv()无法读取CSV文件中的某些字符,
fgetcsv()会忽略行首的特殊字符。
我的应用程序有一个表单,用户可以上传CSV文件(它的5个内部用户总是上传有效的文件 - 逗号分隔,带引号,记录以LF结束),然后使用PHP将文件导入数据库。
由于我无法更改原因,用户正在上传使用单字节、8位字符编码的
问题是:在
请注意,保留了字母“č”,但省略了字母“Ú”。 fgetcsv 的文档称“自4.3.5版本以来,fgetcsv()现在是二进制安全的”,但看起来它并不是。我做错了什么吗?或者这个函数有问题,我应该寻找其他解析CSV的方法吗?
PHP中fgetcsv()无法读取CSV文件中的某些字符,
fgetcsv()会忽略行首的特殊字符。
我的应用程序有一个表单,用户可以上传CSV文件(它的5个内部用户总是上传有效的文件 - 逗号分隔,带引号,记录以LF结束),然后使用PHP将文件导入数据库。
$fhandle = fopen($uploaded_file,'r');
while($row = fgetcsv($fhandle, 0, ',', '"', '\\')) {
print_r($row);
// further code not relevant as the data is already corrupt at this point
}
由于我无法更改原因,用户正在上传使用单字节、8位字符编码的
Windows-1250
字符集的文件。问题是:在
fgetcsv()
中删除了一些(并非全部!)超过 127 的字符(“扩展ASCII”)。示例数据:"15","Ústav"
"420","Špičák"
"7","Tmaň"
变成
Array (
0 => 15
1 => "stav"
)
Array (
0 => 420
1 => "pičák"
)
Array (
0 => 7
1 => "Tma"
)
请注意,保留了字母“č”,但省略了字母“Ú”。 fgetcsv 的文档称“自4.3.5版本以来,fgetcsv()现在是二进制安全的”,但看起来它并不是。我做错了什么吗?或者这个函数有问题,我应该寻找其他解析CSV的方法吗?