我的应用程序有一个表单,用户可以上传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
}
Run Code Online (Sandbox Code Playgroud)
由于我无法更改的原因,用户正在上载Windows-1250charset中编码的文件- 单字节,8位字符编码.
问题:并且有一些(不是全部!)字符超过127("扩展ASCII")fgetcsv().示例数据:
"15","Ústav"
"420","Špi?ák"
"7","Tma?"
Run Code Online (Sandbox Code Playgroud)
变
Array (
0 => 15
1 => "stav"
)
Array (
0 => 420
1 => "pi?ák"
)
Array (
0 => 7
1 => "Tma"
)
Run Code Online (Sandbox Code Playgroud)
(注意?保留,但Ú被删除) …
我有一个代码.在localhost上我没有读取csv文件(使用Unicode字符)的问题.但当主机输出上传代码什么都没有.为什么?什么是解决方案?
while (($data=fgetcsv($fin,5000,","))!==FALSE)
{
var_dump($data[0]); //on host output is `string(0) ""` but on local i can see output
var_dump($data[1]); //$data[1] is integer and i can see output
}
Run Code Online (Sandbox Code Playgroud)