copy() из _FILES, UTF-8 в названиях файлов

Koichi

Новичок
Кстати, вот ещё вариант. Работает под виндой, но не работает под Linux:
PHP:
$filenameFileLocal = iconv("UTF-8","",$filenameFile);
По идее должен конвертнуть из UTF-8 в родную кодировку системы, но под Linux почему-то не работает...
 

phprus

Moderator
Команда форума
Koichi
Хорошо, я сделал архив: KoichiSenada/PHP/KoichiSenada.fileupload.buggy.rar
Скачал, запустил. Насчитал пару десятков ошибок:
"Notice: Undefined variable:..."

После сохранения в каталоге ./works/Files/ появится папка с файлом. Вот у этого файла название всегда получается кривым, если изначально файл содержал в названии нелатинские символы.
Не воспроизводится. Вот что у меня:
phprus@notebook:~/*****/www/1/works/Files/1> ls
русский имя.txt
Это скопировано прямо из консоли. Кодировка консоли у меня utf-8.

Так что очень похоже что у тебя проблемы с той программой которая отображает неправильное имя. Чем ты смотришь имя файла, когда видиш искажение имени?

то сервер (WampServer) нормально отдаёт его, и открывается диалог Открыть/Сохранить/Отмена.
Что за сервер? А этот сервер знает о существовании кодировки UTF8?

джамшут
если ты до сих пор не сталкивался с проблемой кодировок (вот ведь заливает-то..) - значит у тебя ещё всё впереди.
Ну если у тебя на столько кривые руки что ты не смог избежать проблем с кодировками, то это только твои проблемы (это я к тому что ты пытаешься усомниться в истинности моих слов). Да я не сталкивался с проблемами кодировок, потому что я использую ПО, которое поддерживает нужные мне кодировки и не забываю переключать кодировки когда нужно.
 

джамшут

Новичок
и не забываю переключать кодировки когда нужно.
это основная проблема. _нужно_ незабывать _каждый раз_ переключать кодировки (и то, не всегда это возможно). почему это должен делать пользователь? какое вообще пользователю дело до используемой кодировки, если единственное, что ему нужно - увидеть правильные глифы на экране?
 

Koichi

Новичок
phprus, то есть ты в форме закачал файлик с названием "русский имя.txt" и он именно в таком виде и сохранился в папке "./works/Files/1/" ??
Ну здорово.
WampServer: http://www.wampserver.com/

А у меня на провайдере похоже сейчас другая проблема, из ряда настроек ini:
safe_mode: on
safe_mode_gid: on
Сейчас ищу инфу насчёт того, как задать файлу gid, чтобы избежать разрешений -rwxrwxrwx

Я рад, если у тебя всё получилось с сохранением русских имён файлов.
Какой у тебя Linux и какой Apache?
 

phprus

Moderator
Команда форума
Koichi
Какой у тебя Linux и какой Apache?
У меня OpenSuSE 10.2, Apache/2.2.3 и PHP 5.2.5. Системная локаль ru_RU.UTF-8

то есть ты в форме закачал файлик с названием "русский имя.txt" и он именно в таком виде и сохранился в папке "./works/Files/1/" ??
Да. Он именно в таком виде и сохранился. Я на все 100% уверен, что у тебя он тоже сохранился с правильным именем, но вот программы которыми ты смотришь это имя почему-то не понимают utf8.
Попробуй прочитать и вывести список всех файлов из этого каталога php-скриптом и посмотри что он выдаст (при этом не забудь указать в заголовках, что скрипт вернет данные в кодировке utf-8).
 
Сверху