В общем давно меня заботил вопрос об автоматическом определении кодировок для сабов к аниме :) В итоге пришлось написать небольшой кoстылек:
#!/usr/bin/perl
use strict;
use Encode::Detect::Detector;
my %SUB = ("ass" => ["-ass"], "srt" => []);
my %ENC = ('utf-8' => 'utf8', 'windows-1251' => 'cp1251');
my $DEFAULT_ENC = "utf8";
foreach (@ARGV) {
my ($sname, $e, $t) = /^(.*)\.\w+$/;
foreach (keys %SUB) {
my $sfile = $sname . "." . $_;
if ( -f $sfile) {
my %enc;
$t = $_;
open SFH, $sfile;
while (<SFH>) {
my $e = Encode::Detect::Detector::detect($_);
$enc{$e}++ if defined $ENC{$e};
}
$e = $ENC{lc((sort {$enc{$b} <=> $enc{$a}} keys %enc)[0])};
last;
}
}
system "mplayer", (defined $SUB{$t} ? @{$SUB{$t}} : @{[]}), "-subcp", $e || $DEFAULT_ENC, $_;
}
в доках к mplayer ничего про автоопределение кодировок я не нашел, интересно кто и как решает такие проблемы...