Forum Webscript.Ru
Программирование => Perl => Тема начата: frg от 22 Марта 2001, 08:09:10
-
У меня есть .pl файлик, который просматривает мой домашний каталог и выводит список файлов по указанному условию (вещь очень распространенная). Проблемма заключается в том, что если имя каталога или имя файла задано русскими буквами, то ссылка не работает.
Примерчик:
Музыка на WEB
Музыка на WEB
Первая и вторая ссылки работают, а третья нет.
Может быть нужно перекодировать русские буквы во что-то другое, или еще что-то..?
-
А как насчет того, чтоб при закачке в этот каталог файлов их имена падали бы в файлик (типа индекса каталога) в котором они пронумерованы, а потом бы не рылся по каталогу, а читал бы файлик, да выписывал оттуда ссылки (по номеру файла).
файл:
1 //frg/MUSIC\\alsu!\\0001.MP3
2 //frg/MUSIC\\Raznoe\\THE BEATLES - YESTERDAY.MP3
3 //frg/MUSIC\\Raznoe\\Жин-жин-Снегом Стать.mp3
Реально фалы назывались бы 1.mp3 2.mp3 ...
потом split\'ом выковыривай имена и их индексы.
IC\\alsu!\\0001.MP3
IC\\Raznoe\\THEBEATLES-YESTERDAY.MP3
IC\\Raznoe\\Жин-жин-СнегомСтать.mp3
а если кто хочет скачать, сделай форму и подпихивай им вместо 1.mp3 - //frg/MUSIC\\alsu!\\0001.MP3 ...
Ну или как-нибудь еще...:-)
Просто это то, что первое в голову пришло. А ежели почесать репу, мож еще чего придумаешь.
Между прочим, в каталоге у NAS\'а стстьи лежат не так как они назывались до того (у авторов). Насколько я понимаю им насильно приписывается какое-то имя. Ежели не так, NAS, поправь.
-
lodevar (22-03-2001 10:32):
Между прочим, в каталоге у NAS\'а стстьи лежат не так как они назывались до того (у авторов). Насколько я понимаю им насильно приписывается какое-то имя. Ежели не так, NAS, поправь.
А у меня статьи вообще в MySQL хранятся.
-
NAS (22-03-2001 12:46):
А у меня статьи вообще в MySQL хранятся.
Вот-вот, frg, не дело это по диску чесать, когда хочешь страничку сгенерить. Хорошо, когда там не много файлов, а когда там несколько сот :-(
Умереть с тоски можно. ;-)
-
NAS (22-03-2001 12:46):
А у меня статьи вообще в MySQL хранятся.
А по-подробнее... Ссылка на статью хранится, а сама статья где-то в html\'е, или весь текст в базе?
-
Всё в базе. Ссылка, анонс, статья, кол-во прочтений, автор и т.д.
-
Уважаемые NAS и LODEVAR! Ну а если хочется прочесать дикс и сгенерировать страничку.. И там не только *.mp3 но и *.doc, *.xls и всякая другая лабуда.. Я же говорю, что наверное это уже кто-то придумал и без меня. У меня идея заключается в том, чтобы создать в intranet WebServer где каждому зарегистрированному useru будет отводиться место на диске в его личном домашнем каталоге, куда он будет заливать столько информации, сколько ему нужно. (что-то типа хостинга..). Проблемма в том, что *.doc, *.xls файлы user-ы любят создавать с длинными русскими именами. Вот и вся суть проблеммы..
-
Совет:
Попробуй поставь кавычки ТИПА - " и слеши в другую сторону и всё будет ОК }>
-
Уважаемый Alex_k!
Если бы все было так просто.. Кавычки помогают в том случае, если у тебя вместо пробелов в длинных именах не стоит % 20 и работает только с латинскими символами. А если встречаются русские символы, выдается сообщение об ошибке..
-
А какой у тебя сервер и под какую ось?
-
Apache/1.3.6 (Win32)
OS Windows 98
-
А IIS не пробовал?
А еще посмотри http://uwg.boom.ru/comp/unix/apache/apache_r/all.html
-
Я тут набрел на очень простой транслятор
#!/usr/local/bin/perl
print "\\"Content-Type: text/plain \\"
";
print "";
$dos=" Ўў?¤?с¦§ЁcЄ<¬-RЇабвгдежзийклмноп??\'?":р++?%?????\'\'""--?T?>????";
$win="абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
$in_tab=$dos;
$out_tab=$win;
$file=&trans($file);
sub trans
{ $instr= $_[0];
$outstr="";
for ($i=0; $i { $symb=substr($instr, $i, 1);
$pos=index($in_tab, $symb);
if ($pos>=0)
{ $newsymb=substr($out_tab, $pos, 1);
$outstr.=$newsymb;
}
else
{ $outstr.=$symb;
}
}
return ($outstr);
}
print "";
В переменную $file подставляю имя файла.
Я думал, что разница в кодировках dos - windows. Но это не так. Видимо нужно кодировать типа % 219 % 221 и т.д.
Незнаю, может я и не прав..
А в error.log пишет
[Wed Mar 28 10:00:35 2001] [error] [client 192.168.1.23] File does not exist: f:
/www/users/frg/-Ф-+-А-¦-¦-В-+-А-Г -Ъ-Г-А-¦-_-+-Б-¦-+-¦ -в-н-ж1.doc
IIS я не пробовал.
-
А апач русский? Если русский, то приведенная мной выше ссылка должна подсобить ;-)
Если нет, качай русский.
-
Я скачал новую настройку для Apache версия 1.3.19. Не знаю что я сделал неправильно, я добавил в apache\\conf\\httpd.conf строки
AddCharset WINDOWS-1251 .cp-1251
AddCharset CP866 .cp866
AddCharset ISO-8859-5 .iso-ru
AddCharset KOI8-R .koi8-r
После этого мой Apache загнулся. А когда я это убрал, то он обратно заработал. Скажите, в чем проблема? Может быть нужно еще что-то отконфигурировать. Или версия apache.exe не подходит, или я доку невнимательно читал..
-
frg (30-03-2001 12:26):
После этого мой Apache загнулся. А когда я это убрал, то он обратно заработал. Скажите, в чем проблема? Может быть нужно еще что-то отконфигурировать. Или версия apache.exe не подходит, или я доку невнимательно читал..
А error.log читал?
-
error.log:
Registry does not contain key SOFTWARE\\Apache
Group\\Apache\\1.3.6
-
Достала меня борьба с этими символами, и я пошел по пути наименьшего сопротивления: при просмотре каталога программа переименовывает все файлы с русскими именами, заменяя их на свои, а соответствие записывает в файл descript.ion. Потом в far можно просматривать в режите описания.
Если кому надо скрипт, могу выслать.
-
Примерно про это я тебе и говорил. ;-)
Молодец. Успехов!