Проблема с fgetcsv(). Решение.
09.04.2009Сегодня у меня возникла проблема с fgetcsv(). При импорте csv-файла данная функция PHP некорректно обрабатывала одно из значений, а именно произовдила урезание значения. Сразу я обратил внимание на то, что урезались только те значения, в которых были русские символы, но не придал этому особого значения, так как они урезались не полностью. Спустя почти 2 часа после возникновения проблемы было найдено решение.
Решение проблемы с импортом csv-файлов с помощью fgetcsv() заключается в принудительном выставлении локали в русскую непосредственно перед началом обработки *.csv:
setlocale(LC_ALL, «ru_RU»);
Соответсвенно, если вам необходимо произвести импорт csv с использованием каких-либо символов не английского алфавита, Вам нужно будет выставить соответсвующую локаль.
Проблема была описана в баг-треккере php, где, собственно, и найдено решение.
Надеюсь, эта статья сэкономит Вам время.

Я ничего из этого не понял, но да, ты такой и есть. Да здравствуют мудрые люди!
Comment от Marvin — 30.04.2009 @ 11:48
Скорее всего там дело в том, что русский, небось, в UTF-8 был…
Comment от kstep — 25.05.2009 @ 11:56
спс
Comment от telhar — 10.12.2009 @ 09:02
У меня та же беда, русский в UTF – иначе никак. Но и данное решение к сожалению не помогло. :/
Comment от Ольга — 27.01.2010 @ 11:31
ура!!
setlocale(LC_ALL, ‘ru_RU.UTF-8′);
помогло!!
Comment от Ольга — 27.01.2010 @ 11:41
Вот так вот, ужас просто, Галкин умер. А молодой совсем. Ему жить да жить еще и творить. Вот так вот ,вроде есть человек здоровый, энергичный и в один момент раз и не стало человека. Я просто не знаю, что ж такое то, прям последнее время происходит…
Comment от barbysim — 27.02.2010 @ 17:39
используйте explode()
$f = fopen(«file.csv», «r»);
for ($i=0; $row=fread($f,1000); $i++)
{
$data=explode(‘;’, $row);
…
}
fclose($f);
Comment от Михаил — 08.06.2010 @ 17:26