Есть ли такая кодировка...

Elina74

Вопрос - есть ли такая кодировка, при перекодировании в которую, файл не изменится? Как она называется?
Это общий вопрос.
А конкретно, почему я спрашиваю:
Есть некий бинарный файл, в котором могут быть совершенно любые байты от 0 до 255. Апач, когда получает этот файл в директорию, пытается перекодировать ее к DefaultCharset. Можно перекодировать файл к кодировке, которую указать в .htaccess

tokuchu

DefaultCharset?
А вообще это что у тебя? Русский Apache что-ли?

Elina74

Не знаю... apache 2.0.48 под виндами
До этого имел дело с 1.3 какой-то там под линухом, там апач был русский, там была директива CharsetDisable On, в настоящей версии нету...
И проблема ведь в том, что он искажает файлы, которые я загружаю на сервер, заменяет некоторые байты на другие... неважно, есть у меня .htaccess или нет... и неважно, что там написано, та кодировка, которая установлена по умолчанию в httpd.conf или другая...

evgen5555

А зачем перекодировать?
<Location />
CharsetRecodeMultipartForms Off
</Location>
в httpd.conf рекомендуется прописать...

Elina74

Добавил в точности так, как ты написал...
Апач не запускается...
Поискал в http://gluk.v.ru/manual/mod/quickreference.html списке директив, нашел только
CharsetDefault
CharsetOptions
CharsetSourceEnc

Может мне другой апач поставить? Чтобы работали эти директивы?

evgen5555

Или это в .htaccess надо...
CharsetDisable on
не пробовал?

Elina74

Пробовал, говорит, что не узнает директиву...

france

Если я правильно понял, задается вопрос о том, как закодировать файл, чтобы про перекодировках он оставался тем же самым. При передаче по почте для этого используют кодировку base64. Но, как я понимаю, там используются далеко не все символы. (Поэтому можно сделать кодировку еще более эффективной.)
Программа для перекодировки в "более эффективную кодировку" выложена здесь:
http://www.compression.ru/sh/#Bottom
Там, где написано:
22.12.2k - sh 0.02 & sh 0.02s (исходники прилагаются).

tokuchu

Апач, когда получает этот файл в директорию
Тогда такой вопрос - как он у тебя получает файл в директорию?

Elina74

upload.html


<form enctype="multipart/form-data" action="../cgi-bin/upload/upload.pl" method="POST">
<input type="hidden" name="max_file_size" value="65536"><>
Имя файла: <br>
<input name="filename" type="file">
<br>
<input type="submit" value="Отправить">
</form>


upload.pl


#!c:\perl\bin\perl
use CGI;
$query = new CGI;
$filename = $query->param("filename");
$IN = $query->upload("filename");
open OUT, ">$upload_dir/$filename";
while(<$IN>){
print OUT;
}
close OUT;


Просмотреть, что получается можно тут: http://gluk.v.ru/upload/ Начиная с 13-го рисунка, все они были зааплоажены неправильно (это когда я перенес все под винды).

Marinavo_0507

> Апач, когда получает этот файл в директорию, пытается перекодировать ее к DefaultCharset.
> Можно перекодировать файл к кодировке, которую указать в .htaccess
На форум как-то заливают картинки, и ничего не перекодируется.
Никаких специальных настроек никто не делал для этого.
Поэтому это наверное у тебя какие-то хитрые настройки, маза их отменить.

evgen5555

Русский apache перекодировывает аплоады на лету по умолчанию.

Marinavo_0507

Маза прочитать документацию и найти, где это отключается

Elina74

Поищи, вот мануал именно к тому апачу, который установлен у меня.
http://gluk.v.ru/manual/

Marinavo_0507

Наверное, надо смотреть по ключевому слову InputFilter

evgen5555

Лучше откати и поставь какую-нибудь из версий 1.3.x

Elina74

Итак, поставил Апач 1.3.22 русский (Win32 скачанный по ссылке с сайта apache.lexa.ru
Включил в httpd.conf для директории cgi-bin
AllowOverride All
Написал в файле .htaccess, который лежит в директории со скриптом, директиву
CharsetDisable On
И вставил в скрипт upload.pl строчку
binmode(OUT);
После всех этих манипуляций скрипт для загрузки картинок на сервер снова заработал. Смотрите:
http:\\gluk.v.ru\upload.html
Оставить комментарий
Имя или ник:
Комментарий: