Возникают проблемы при загрузке файлов и записью на диск, когда они имеют русские имена?
Повреждается только имя файла, например:
«объект "файл.jpg" сохранятся с именем
файл.jpg»
Содержимое остаётся целым в независимости от кодировки искомых.
СУТЬ ПРОБЛЕМЫ:
Есть сайт на хостинге (несколько различных сайтов с CMS Joomla, MODx и т.п.), которые периодически наполняются контентом от веб-пользователей. Хостинг корректно поддерживает загрузку и сохр. файлов с русскими именами через файл-менеджер.
Время от времени на сайтах запускаются доп. модули и плагины, - для этого они (в виде содержимого сервера, через FTP) копируются на ноутбук с настроенным виртуальным хостингом для тестирования. Если раннее пользователь
загружал, что-то с русским именем, то это приводит к фатальным ошибкам в работе скриптов на виртуальном хостинге.
Для понимания проблемы проводился тест скриптов PHP с использованием специальных функции на вирт.хостинге со следующими результатами:
- Проблема возникает именно во время записи на диск, в файловую систему Windows (Виндовс 7).
- Во время исполнения скрипта .php имя файла можно корректно воспроизводить из указателя ("data handler")
- После команды перемещения на диск виртуального хостинга. Файл создаётся с бракованным именем.
- Использую инструкцию iconv() в скрипте перекодирования строки с именем файла из
UTF-8 в windows-1251 можно сохранять файлы с именем оригинала.
Решению проблемы помогло бы понимание того, какие параметры среды Windows необходимы для корректного взаимодействия программы сервера (или интерпретатора PHP) с файловой системой ОС...
Странным кажется тот факт, что в самом Windows можно писать любые имена файлов, например:
«Описание препарата Кагоцел®.doc», «Отчёты • Справки.docx», «Папка с кодами…» и всё работает!
Проблема с кодировкой напоминает работу некоторых .bat скриптов. Если «батник» имеет отличную от DOS-866 кодировку, то команда вроде:
echo файл.png
pause
# При запуске в проводнике консоль выведет что-то вроде – файл.jpg
Встречал к примеру про процессов через wmic в спец.режиме или может существует какой-то специальный режим запуска консольных или DOS-подобных программ?