file_exist проходит, а rename не хавает файлы с кривыми кодировками

sverel

Новичок
file_exist проходит, а rename не хавает файлы с кривыми кодировками

Из ZIP-архива выгружаются файлы. Имена файлов в кодировке cp866 и в папке выглядит всё ужастно. Однако, ф-ция file_exist() возвращает true (хорошо, что xml-файл тоже в cp866). Но MySQL такие имена не хавает ругаясь на не корректные кодировки, поэтому я решил переименовать файлы в нормальные. Но вот ф-ция их rename() не хавает:

PHP:
if ( ! file_exists($imagesDir . $fileName)) {
	return;
}

rename($imagesDir . $fileName, $imagesDir . $normalFileName);
Выдаёт:

rename(I:/http/example.ru/tmp/1c7_exchange/Images/���஢� ���.jpeg,I:/http/example.ru/tmp/1c7_exchange/Images/Здоровый Дом.jpeg) [function.rename]: File exists

Но второго файла "Здоровый дом.jpeg" нет. Не пойму, что rename-у не нравится?

PS. можно конечно MySQL столбец сделать BLOB-ом, но мы же не ищем лёгких путей. Хотелось бы понять, что именно не нравится rename-у.
 

mity

Новичок
Попробуйте сначала переименовать во временное имя, скажем 1348485.tmp. А затем это временное имя переименовать в нормальное.
А fopen файлы с такими корявыми именами открывает?
 

sverel

Новичок
Всё разобрался. Стал переименовывать в rand() . '.jpg' и всё прошло, причем прошло лучше, чем было... Оказалось, что нескольким товарам могла соответствовать одна и та же картинка. Поэтому то и косяки были...

Спасибо за идею.
 
Сверху