我使用此代码获得了一个奇怪的行为
foreach ($files as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$name = $_FILES["excelFiles"]["name"][$key];
$handle = fopen($_FILES["excelFiles"]["tmp_name"][$key], "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
print_r($data);
echo "\r\n";
}
fclose($handle);
}}
事情是,带有撇号的希伯来字符串被剪掉(只是在稀薄的空气中消失)
这是一行结果,例如:
Array
(
[0] => '
[1] => אני לא רעבה, תודה
)
答案 0 :(得分:2)
那是因为fgetcsv
期望文件以您当前语言环境使用的任何编码进行编码:
注意:
此功能会考虑区域设置。如果LANG是例如 en_US.UTF-8,单字节编码的文件由此读错 功能
这也是你的情况。
要解决此问题,您必须执行以下操作之一:
str_getcsv
或通过将fgetcsv
指向memory stream来读取数据(请参阅php://memory
和php://temp
)及其转化数据