Страница 1 из 1

[perl] опасные символы в названиях файлов (unix)

Добавлено: 2010-10-28 6:38:00
ProFTP
как заменить опасные символы в названиях файлов (unix) и URL(httpd)?


есть файл, в название его есть пробелы и другие опасные символы (в том числе русские буквы)

название файла содержится в массиве...

Код: Выделить всё

Vitotronic 100-GC1 + Vitotronic 300-K(4).htm
когда я хочу открыть такой файл, то мне пишет ошибку, что нет файла, потому что название файла обрезалось и-за того что в названии есть пробел...



я пробовал так

Код: Выделить всё

sub name_file {

 my $file = shift;

 $file =~ s/ /_/sig;
# $file =~ s/././sig;
 $file =~ s/\//_/sig;
  
 $file =~ tr/абвгдзийклмнопрстуфхцъыьАБВГДЗИЙКЛМHОПРСТУФХЦЪЫЬ/abvgdzijklmnoprstufhc\"y\'ABVGDZIJKLMNOPRSTUFHC\"Y\'/;   

# " "=> "_", "."=> ".", "/"=> "_" 

return $file;

}
но файл все равно не открылся


вот есть для URL

Код: Выделить всё

 $tr = array(
        "А"=>"a","Б"=>"b","В"=>"v","Г"=>"g",
        "Д"=>"d","Е"=>"e","Ж"=>"j","З"=>"z","И"=>"i",
        "Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
        "О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t",
        "У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch",
        "Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",
        "Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b",
        "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
        "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
        "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
        "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
        "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
        "ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya", 
        " "=> "_", "."=> ".", "/"=> "_"
  );
  

но это файл, тоже, не открыло..

Re: [perl] опасные символы в названиях файлов (unix)

Добавлено: 2010-10-28 8:05:12
FreeBSP
urlencode()
или
" " => "%20"
или " " => "+", "+" => "%2b"
не стоит чтот оменять в имени файла, надо его просто перекодировать как предписывает URL

Vitotronic+100-GC1+%2B+Vitotronic+300-K(4).htm