Forum Webscript.Ru

Программирование => Perl => Тема начата: frg от 22 Марта 2001, 08:09:10

Название: Русские символы
Отправлено: frg от 22 Марта 2001, 08:09:10
У меня есть .pl файлик, который просматривает мой домашний каталог и выводит список файлов по указанному условию (вещь очень распространенная). Проблемма заключается в том, что если имя каталога или имя файла задано русскими буквами, то ссылка не работает.
Примерчик:

Музыка на WEB


Музыка на WEB






Первая и вторая ссылки работают, а третья нет.
Может быть нужно перекодировать русские буквы во что-то другое, или еще что-то..?
Название: Русские символы
Отправлено: lodevar от 22 Марта 2001, 10:32:56
А как насчет того, чтоб при закачке в этот каталог файлов их имена падали бы в файлик (типа индекса каталога) в котором они пронумерованы, а потом бы не рылся по каталогу, а читал бы файлик, да выписывал оттуда ссылки (по номеру файла).

файл:
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, поправь.
Название: Русские символы
Отправлено: от 22 Марта 2001, 12:46:49
Цитировать
lodevar (22-03-2001 10:32):
Между прочим, в каталоге у NAS\'а стстьи лежат не так как они назывались до того (у авторов). Насколько я понимаю им насильно приписывается какое-то имя. Ежели не так, NAS, поправь.
А у меня статьи вообще в MySQL хранятся.
Название: Русские символы
Отправлено: lodevar от 22 Марта 2001, 13:07:46
Цитировать
NAS (22-03-2001 12:46):
А у меня статьи вообще в MySQL хранятся.

Вот-вот, frg, не дело это по диску чесать, когда хочешь страничку сгенерить. Хорошо, когда там не много файлов, а когда там несколько сот :-(
Умереть с тоски можно. ;-)
Название: Русские символы
Отправлено: lodevar от 22 Марта 2001, 15:17:16
Цитировать
NAS (22-03-2001 12:46):
А у меня статьи вообще в MySQL хранятся.

А по-подробнее... Ссылка на статью хранится, а сама статья где-то в html\'е, или весь текст в базе?
Название: Русские символы
Отправлено: от 22 Марта 2001, 16:38:53
Всё в базе. Ссылка, анонс, статья, кол-во прочтений, автор и т.д.
Название: Русские символы
Отправлено: frg от 23 Марта 2001, 08:27:20
Уважаемые NAS и LODEVAR! Ну а если хочется прочесать дикс и сгенерировать страничку.. И там не только *.mp3 но и *.doc, *.xls и всякая другая лабуда.. Я же говорю, что наверное это уже кто-то придумал и без меня. У меня идея заключается в том, чтобы создать в intranet WebServer где каждому зарегистрированному useru будет отводиться место на диске в его личном домашнем каталоге, куда он будет заливать столько информации, сколько ему нужно. (что-то типа хостинга..). Проблемма в том, что *.doc, *.xls файлы user-ы любят создавать с длинными русскими именами. Вот и вся суть проблеммы..
Название: Русские символы
Отправлено: от 23 Марта 2001, 22:18:45
Совет:
 Попробуй поставь кавычки ТИПА - " и слеши в другую сторону и всё будет ОК }>
Название: Русские символы
Отправлено: frg от 26 Марта 2001, 06:39:55
Уважаемый Alex_k!
Если бы все было так просто.. Кавычки помогают в том случае, если у тебя вместо пробелов в длинных именах не стоит % 20  и работает только с латинскими символами. А если встречаются русские символы, выдается сообщение об ошибке..
Название: Русские символы
Отправлено: lodevar от 26 Марта 2001, 10:43:49
А какой у тебя сервер и под какую ось?
Название: Русские символы
Отправлено: frg от 27 Марта 2001, 05:54:26
Apache/1.3.6 (Win32)
OS Windows 98
Название: Русские символы
Отправлено: lodevar от 27 Марта 2001, 13:30:56
А IIS не пробовал?

А еще посмотри http://uwg.boom.ru/comp/unix/apache/apache_r/all.html
Название: Русские символы
Отправлено: frg от 28 Марта 2001, 08:46:49
Я тут набрел на очень простой транслятор

#!/usr/local/bin/perl

print "\\"Content-Type: text/plain \\"

";
print "";

   $dos=" Ўў?¤?с¦§ЁcЄ<¬-RЇабвгдежзийклмноп??\'?":р++?%?????";
   $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 я не пробовал.
Название: Русские символы
Отправлено: lodevar от 28 Марта 2001, 08:59:54
А апач русский? Если русский, то приведенная мной выше ссылка должна подсобить ;-)
Если нет, качай русский.
Название: Русские символы
Отправлено: frg от 30 Марта 2001, 12:26:43
Я скачал новую настройку для 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 не подходит, или я доку невнимательно читал..
Название: Русские символы
Отправлено: lodevar от 30 Марта 2001, 12:47:44
Цитировать
frg (30-03-2001 12:26):
После этого мой Apache загнулся. А когда я это убрал, то он обратно заработал. Скажите, в чем проблема? Может быть нужно еще что-то отконфигурировать. Или версия apache.exe не подходит, или я доку невнимательно читал..
А error.log читал?
Название: Русские символы
Отправлено: frg от 30 Марта 2001, 13:03:30
error.log:
Registry does not contain key SOFTWARE\\Apache
Group\\Apache\\1.3.6
Название: Русские символы
Отправлено: frg от 04 Апреля 2001, 08:37:19
Достала меня борьба с этими символами, и я пошел по пути наименьшего сопротивления: при просмотре каталога программа переименовывает все файлы с русскими именами, заменяя их на свои, а соответствие записывает в файл descript.ion. Потом в far можно просматривать в режите описания.
Если кому надо скрипт, могу выслать.
Название: Русские символы
Отправлено: lodevar от 04 Апреля 2001, 08:52:54
Примерно про это я тебе и говорил. ;-)

Молодец. Успехов!