fgetcsv () удаляет символы с диакритическими знаками (т.е. не ASCII) - как это исправить?
Похожие вопросы:
Некоторые символы в файле CSV не читаются во время PHP fgetcsv () ,
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
}
По причинам, которые я не могу изменить, пользователи загружают файл, закодированный вWindows-1250
charset - однобайтовая 8-битная кодировка символов.
Проблема: инемного (не все!) символы за 127 («расширенный ASCII») сбрасываются вfgetcsv()
, Пример данных:
"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?