Как я решил проблему с кодировками в
LinuxDC++ 0.691 (установочный файл linuxdcpp-0.0-0.4.20060620cvs.110asp.i386.rpm):
на рабочем столе создал запускаемый файл следующего содержания:
Код: Выделить всё
#!/bin/bash
LC_ALL='ru_RU.CP1251'
export LC_ALL
ldcpp &
Все загружаемые файлы попадают у меня в директорию /home/vlad/.dc++/Downloads/ в кодировке UTF-8, но так как родная кодировка у меня CP1251, то всё выглядит отвратительно.
Что я сделал: создал папку /home/vlad/.dc++/Downloads_cp1251/ и поместил в неё скрипт go.sh:
Код: Выделить всё
#!/usr/bin/perl
use File::Copy;
$dir_from='/home/vlad/.dc++/Downloads/';
$dir_to='/home/vlad/.dc++/Downloads_cp1251/';
proceed_dir($dir_from, $dir_to);
sub proceed_dir{
my $cur_from=$_[0];
my $cur_to=$_[1];
opendir (DIR, $cur_from) || die "Can't open dir $cur_from: $!";
my @list_from=grep {!/^\./} readdir(DIR);
closedir (DIR) || die "Can't close dir $cur_from: $!";
foreach (@list_from) {
if ($_ && (-d $cur_from.$_ || -e $cur_from.$_)) {
my $new_name=$_;
my $s= `echo "$new_name" | iconv -f UTF-8 -t WINDOWS-1251 2> /dev/null`;
chomp($s);
if ($s) { $new_name=$s; }
if (-d $cur_from.$_) {
unless (-d $cur_to.$new_name) {
mkdir ($cur_to.$new_name, 0755);
}
proceed_dir($cur_from.$_.'/', $cur_to.$new_name.'/');
}
if (-e $cur_from.$_ && !-d $cur_from.$_) {
move($cur_from.$_, $cur_to.$new_name);
print "Move: $cur_from$_ - $cur_to$new_name\n";
}
}
}
if ($cur_from ne $dir_from) { rmdir($cur_from); }
}
Этот скрипт переносит все папки и файлы из директории Downloads в директорию Downloads_cp1251 и при этом перекодирует все русские названия из UTF-8 в CP1251. Пользуйтесь на здоровье.