Описание проблемы При загрузке на сервер бинарных файлов (изображений, архивов, программ и т.п.) с помощью cgi- или php-скриптов информация в них искажается, если не принять специальных мер. Источник проблемы На нашем сервере используется "Русский Apache", который по умолчанию перекодирует все принимаемые данные из множества русских кодировок в одну стандартную (на нашем сервере это windows-1251). В отношении текстовой информации это снимает довольно большое число проблем, однако взамен порождает проблему с данными, которые не являются обычным текстом. Способы решения Нужно создать в каталоге, где лежит скрипт, файл .htaccess и поместив в него директивы, отключающие перекодировку. Например такие: <IfModule mod_charset.c> CharsetRecodeMultipartForms off </IfModule> CharsetRecodeMultipartForms управляет перекодировкой данных, отправляемых из html-формы в формате multipart/form-data (который и применяется для загрузки файлов на сервер с помощью html-формы). IfModule - это на случай, если Ваш проект будет переноситься на обычный Apache. Вместо "CharsetRecodeMultipartForms off" можно использовать "CharsetDisable on" - тогда "русскость" Apache будет отключена "по-максимуму". Если нужно отключить перекодировку выборочно - только для некоторых скриптов в данном каталоге, - вставьте описанные выше директивы внутрь директивы <Files> или <FilesMatch> Учитывайте, что если в форме, данные из которой принимает скрипт с отключенной перекодировкой, есть текстовые поля, то в случае необходимости перекодировать их Вам придется самостоятельно. |