saransk 22.10.2011 15:46 QIP

Очередной велосипед по угадыванию кодировок, вроде работает. Можете звать меня говном, но как лучше я не знаю

use Encode;
print join("\n",Encode→encodings(":all"));

open(zz,"unicode");
binmode(zz,":utf8");
binmode(STDOUT,":utf8");
while(<zz>){

foreach $enc(qw/cp1251 utf8 cp866 koi8r iso-8859-5 MacCyrillic/){
$test=encode($enc,$_);
($guess,$score)=decodeUnknown2($test);
$try=decode($guess,encode($enc,$_));
#print "$enc (".length($_).") → $guess, score=$score\n";

$count++;
if($enc eq $guess || $_ eq $try){$ok++;} else {
print "$enc=".$guess." ($score) $try\n";
$fail++;
}
}

#last;

}

print "tests $count:\nok: $ok\nfail: $fail\n\n";

sub decodeUnknown{
my $str=shift;
if($str=~/[\xC0-\xfd][^\x80-\xbf]/){ # broken unicode or other encoding

my $score=0;
my $res="utf8";
my $t;
$t=($str=~tr/\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xe b\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xf f\xb8\xa8//);
#print "score $t for 1251\n";
if($t>$score){$res="cp1251";$score=$t;}

$t=($str=~tr/\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xa b\xac\xad\xae\xaf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xe f\xf1\xf0//);
#print "score $t for 866\n";
if($t>$score){$res="cp866";$score=$t;}

$t=($str=~tr/\xf9\xf8\xfc\xe0\xf1\xc1\xc2\xd7\xc7\xc4\xc5\xd6\xda\xc9\xca\xcb\xc c\xcd\xce\xcf\xd0\xd2\xd3\xd4\xd5\xc6\xc8\xc3\xde\xdb\xdd\xdf\xd9\xd8\xdc\xc0\xd 1\xa3\xb3//);
#print "score $t for koi8r\n";
if($t>$score){$res="koi8r";$score=$t;}

$t=($str=~tr/\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xd b\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xe f\xf1\xa1//);
#print "score $t for iso\n";
if($t>$score){$res="iso-8859-5";$score=$t;}

$t=($str=~tr/\x9e\x9f\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xe e\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf\xde\xdd//) ;
print "score $t for MacCyrillic\n";
if($t>$score){$res="MacCyrillic";$score=$t;}

return($res);
} else {
return "utf8";
}

}

sub decodeUnknown2{
my $str=shift;

if($str=~m/^([\x00-\x7f]|[\xC0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0- \xf7][\x80-\xbf]{3}|[\xf8-\xfb][\x80-\xbf]{4}|[\xfc-\xfd][\x80-\xbf]{5})+$/s){
return "utf8";
} else { # broken utf8 or other encoding

my $score=0;
my $res="utf8";
my $t;
@t=($str=~m/(\xe0\xe1|\xe0\xe2|\xc0\xe2|\xe0\xe3|\xe0\xe4|\xe0\xe5|\xe0\xe6|\xe0 \xe7|\xe0\xe8|\xe0\xe9|\xe0\xea|\xe0\xeb|\xc0\xeb|\xe0\xec|\xe0\xed|\xc0\xed|\xe 0\xef|\xe0\xf0|\xc0\xf0|\xe0\xf1|\xe0\xf2|\xe0\xf3|\xe0\xf4|\xe0\xf5|\xe0\xf6|\x e0\xf7|\xe0\xf8|\xe0\xf9|\xe0\xfe|\xe0\xff|\xe1\xe0|\xc1\xe0|\xe1\xe5|\xc1\xe5|\ xe1\xe8|\xc1\xe8|\xe1\xeb|\xe1\xed|\xe1\xee|\xc1\xee|\xe1\xf0|\xc1\xf0|\xe1\xf1| \xe1\xf3|\xe1\xf9|\xe1\xfa|\xe1\xfb|\xe2\xe0|\xc2\xe0|\xe2\xe3|\xe2\xe5|\xc2\xe5 |\xe2\xe8|\xc2\xe8|\xe2\xea|\xe2\xeb|\xc2\xeb|\xe2\xed|\xe2\xee|\xc2\xee|\xe2\xf 0|\xe2\xf1|\xe2\xf2|\xe2\xf3|\xe2\xf8|\xe2\xfb|\xe2\xfc|\xe2\xff|\xe3\xe0|\xc3\x e0|\xe3\xe4|\xe3\xe5|\xc3\xe5|\xe3\xe8|\xe3\xeb|\xe3\xed|\xe3\xee|\xc3\xee|\xe3\ xf0|\xc3\xf0|\xe3\xf3|\xe4\xe0|\xc4\xe0|\xe4\xe2|\xe4\xe5|\xc4\xe5|\xe4\xe6|\xc4 \xe6|\xe4\xe8|\xe4\xea|\xe4\xeb|\xe4\xed|\xe4\xee|\xc4\xee|\xe4\xef|\xe4\xf0|\xe 4\xf1|\xe4\xf3|\xe4\xfb|\xe4\xfc|\xe4\xff|\xe5\xe0|\xe5\xe1|\xe5\xe2|\xc5\xe2|\x e5\xe3|\xe5\xe4|\xe5\xe5|\xe5\xe6|\xe5\xe7|\xe5\xe8|\xe5\xe9|\xe5\xea|\xe5\xeb|\ xe5\xec|\xe5\xed|\xe5\xee|\xe5\xef|\xe5\xf0|\xe5\xf1|\xe5\xf2|\xe5\xf4|\xe5\xf5| \xe5\xf6|\xe5\xf7|\xe5\xf8|\xe5\xf9|\xe5\xff|\xb8\xec|\xb8\xed|\xb8\xf0|\xb8\xf2 |\xe6\xe0|\xe6\xe4|\xe6\xe5|\xe6\xe8|\xe6\xed|\xe6\xee|\xe6\xf3|\xe7\xe0|\xc7\xe 0|\xe7\xe2|\xe7\xe4|\xe7\xe5|\xe7\xe8|\xe7\xeb|\xe7\xec|\xe7\xed|\xe7\xee|\xe7\x f0|\xe7\xf3|\xe7\xfb|\xe8\xe0|\xe8\xe1|\xe8\xe2|\xc8\xe2|\xe8\xe3|\xe8\xe4|\xe8\ xe5|\xe8\xe6|\xe8\xe7|\xc8\xe7|\xe8\xe8|\xe8\xe9|\xe8\xea|\xe8\xeb|\xe8\xec|\xe8 \xed|\xc8\xed|\xe8\xee|\xe8\xef|\xe8\xf0|\xe8\xf1|\xc8\xf1|\xe8\xf2|\xe8\xf4|\xe 8\xf5|\xe8\xf6|\xe8\xf7|\xe8\xf8|\xe8\xf9|\xe8\xfe|\xe8\xff|\xe9\xeb|\xe9\xed|\x e9\xee|\xe9\xf1|\xe9\xf2|\xea\xe0|\xca\xe0|\xea\xe2|\xea\xe5|\xea\xe6|\xea\xe8|\ xca\xe8|\xea\xeb|\xea\xed|\xea\xee|\xca\xee|\xea\xf0|\xca\xf0|\xea\xf1|\xea\xf2| \xea\xf3|\xca\xf3|\xea\xf6|\xeb\xe0|\xcb\xe0|\xeb\xe3|\xeb\xe5|\xcb\xe5|\xeb\xb8 |\xeb\xe6|\xeb\xe8|\xcb\xe8|\xeb\xea|\xeb\xeb|\xeb\xed|\xeb\xee|\xeb\xf1|\xeb\xf 3|\xeb\xfb|\xeb\xfc|\xeb\xfe|\xeb\xff|\xec\xe0|\xcc\xe0|\xec\xe1|\xec\xe5|\xcc\x e5|\xec\xe8|\xcc\xe8|\xec\xeb|\xec\xec|\xec\xed|\xec\xee|\xcc\xee|\xec\xef|\xec\ xf1|\xec\xf3|\xec\xfb|\xec\xff|\xed\xe0|\xcd\xe0|\xed\xe3|\xed\xe4|\xed\xe5|\xcd \xe5|\xed\xe8|\xcd\xe8|\xed\xea|\xed\xed|\xed\xee|\xcd\xee|\xed\xf0|\xed\xf1|\xe d\xf2|\xed\xf3|\xed\xf4|\xed\xf6|\xed\xf7|\xed\xfb|\xed\xfc|\xed\xff|\xee\xe1|\x ce\xe1|\xee\xe2|\xee\xe3|\xee\xe4|\xee\xe5|\xee\xe6|\xee\xe7|\xee\xe8|\xee\xe9|\ xee\xea|\xee\xeb|\xee\xec|\xee\xed|\xee\xee|\xee\xef|\xee\xf0|\xce\xf0|\xee\xf1| \xce\xf1|\xee\xf2|\xce\xf2|\xee\xf4|\xee\xf5|\xee\xf6|\xee\xf7|\xee\xf8|\xee\xf9 |\xee\xfd|\xee\xfe|\xee\xff|\xef\xe0|\xcf\xe0|\xef\xe5|\xcf\xe5|\xef\xe8|\xef\xe b|\xef\xed|\xef\xee|\xcf\xee|\xef\xef|\xef\xf0|\xcf\xf0|\xef\xf2|\xef\xf3|\xef\x fb|\xf0\xe0|\xd0\xe0|\xf0\xe1|\xf0\xe2|\xf0\xe3|\xf0\xe4|\xf0\xe5|\xd0\xe5|\xf0\ xe6|\xf0\xe8|\xd0\xe8|\xf0\xea|\xf0\xeb|\xf0\xec|\xf0\xed|\xf0\xee|\xd0\xee|\xf0 \xf0|\xf0\xf1|\xf0\xf2|\xf0\xf3|\xd0\xf3|\xf0\xf5|\xf0\xf8|\xf0\xfb|\xf0\xfc|\xf 0\xff|\xf1\xe0|\xd1\xe0|\xf1\xe2|\xd1\xe2|\xf1\xe5|\xd1\xe5|\xf1\xb8|\xf1\xe8|\x d1\xe8|\xf1\xea|\xf1\xeb|\xf1\xec|\xd1\xec|\xf1\xed|\xf1\xee|\xd1\xee|\xf1\xef|\ xd1\xef|\xf1\xf0|\xd1\xd0|\xf1\xf1|\xd1\xd1|\xf1\xf2|\xd1\xf2|\xf1\xf3|\xf1\xf5| \xf1\xf7|\xd1\xd8|\xf1\xfb|\xf1\xfc|\xf1\xff|\xf2\xe0|\xd2\xe0|\xf2\xe2|\xf2\xe5 |\xd2\xe5|\xf2\xe8|\xf2\xea|\xf2\xeb|\xf2\xed|\xf2\xee|\xd2\xee|\xf2\xf0|\xd2\xf 0|\xf2\xf1|\xf2\xf2|\xf2\xf3|\xf2\xfb|\xf2\xfc|\xf2\xff|\xf3\xe0|\xf3\xe1|\xf3\x e2|\xf3\xe3|\xf3\xe4|\xf3\xe5|\xf3\xe6|\xf3\xe7|\xf3\xea|\xf3\xeb|\xf3\xec|\xf3\ xed|\xf3\xef|\xf3\xf0|\xf3\xf1|\xf3\xf2|\xf3\xf5|\xf3\xf7|\xf3\xf8|\xf3\xf9|\xf3 \xfe|\xf4\xe0|\xd4\xe0|\xf4\xe5|\xd4\xe5|\xf4\xe8|\xd4\xe8|\xd4\xeb|\xf4\xee|\xf 4\xf0|\xd4\xf0|\xf4\xf3|\xf5\xe0|\xd5\xe0|\xf5\xe8|\xf5\xed|\xf5\xee|\xf5\xf0|\x f6\xe0|\xf6\xe5|\xf6\xe8|\xf6\xea|\xf6\xfb|\xf7\xe0|\xf7\xe5|\xd7\xe5|\xf7\xb8|\ xf7\xe8|\xf7\xea|\xf7\xed|\xf7\xf2|\xf8\xe0|\xd8\xc0|\xf8\xe5|\xf8\xe8|\xf8\xea| \xf8\xeb|\xf8\xed|\xf8\xee|\xf8\xf2|\xf9\xe0|\xf9\xe5|\xf9\xe8|\xfa\xe5|\xfb\xe2 |\xfb\xe5|\xfb\xe9|\xfb\xea|\xfb\xeb|\xfb\xec|\xfb\xed|\xfb\xef|\xfb\xf0|\xfb\xf 1|\xfb\xf2|\xfb\xf5|\xfb\xf7|\xfb\xf8|\xfc\xe1|\xfc\xe5|\xfc\xe7|\xfc\xea|\xfc\x ec|\xfc\xed|\xfc\xf1|\xfc\xf2|\xfc\xf8|\xfc\xfe|\xfc\xff|\xfd\xea|\xfd\xeb|\xfd\ xed|\xfd\xf2|\xdd\xf2|\xfe\xe1|\xfe\xe4|\xfe\xf2|\xfe\xf7|\xfe\xf9|\xff\xe1|\xff \xe2|\xff\xe4|\xff\xe5|\xff\xe7|\xff\xeb|\xff\xec|\xff\xed|\xff\xf0|\xff\xf1|\xf f\xf2|\xff\xf5|\xff\xf9|\xff\xfe|\xe0|\xc0|\xe1|\xc1|\xe2|\xc2|\xe3|\xc3|\xe4|\x c4|\xe5|\xc5|\xb8|\xa8|\xe6|\xc6|\xe7|\xc7|\xe8|\xc8|\xe9|\xc9|\xea|\xca|\xeb|\x cb|\xec|\xcc|\xed|\xcd|\xee|\xce|\xef|\xcf|\xf0|\xd0|\xf1|\xd1|\xf2|\xd2|\xf3|\x d3|\xf4|\xd4|\xf5|\xd5|\xf6|\xd6|\xf7|\xd7|\xf8|\xd8|\xf9|\xd9|\xfa|\xda|\xfb|\x db|\xfc|\xdc|\xfd|\xdd|\xfe|\xde|\xff|\xdf)/g);
$t=@t;
$t=length(join("",map{length()==2?" ":" "}@t));
#print "score $t for 1251\n";
if($t>$score){$res="cp1251";$score=$t;}

@t=($str=~m/(\xa0\xa1|\xa0\xa2|\x80\xa2|\xa0\xa3|\xa0\xa4|\xa0\xa5|\xa0\xa6|\xa0 \xa7|\xa0\xa8|\xa0\xa9|\xa0\xaa|\xa0\xab|\x80\xab|\xa0\xac|\xa0\xad|\x80\xad|\xa 0\xaf|\xa0\xe0|\x80\xe0|\xa0\xe1|\xa0\xe2|\xa0\xe3|\xa0\xe4|\xa0\xe5|\xa0\xe6|\x a0\xe7|\xa0\xe8|\xa0\xe9|\xa0\xee|\xa0\xef|\xa1\xa0|\x81\xa0|\xa1\xa5|\x81\xa5|\ xa1\xa8|\x81\xa8|\xa1\xab|\xa1\xad|\xa1\xae|\x81\xae|\xa1\xe0|\x81\xe0|\xa1\xe1| \xa1\xe3|\xa1\xe9|\xa1\xea|\xa1\xeb|\xa2\xa0|\x82\xa0|\xa2\xa3|\xa2\xa5|\x82\xa5 |\xa2\xa8|\x82\xa8|\xa2\xaa|\xa2\xab|\x82\xab|\xa2\xad|\xa2\xae|\x82\xae|\xa2\xe 0|\xa2\xe1|\xa2\xe2|\xa2\xe3|\xa2\xe8|\xa2\xeb|\xa2\xec|\xa2\xef|\xa3\xa0|\x83\x a0|\xa3\xa4|\xa3\xa5|\x83\xa5|\xa3\xa8|\xa3\xab|\xa3\xad|\xa3\xae|\x83\xae|\xa3\ xe0|\x83\xe0|\xa3\xe3|\xa4\xa0|\x84\xa0|\xa4\xa2|\xa4\xa5|\x84\xa5|\xa4\xa6|\x84 \xa6|\xa4\xa8|\xa4\xaa|\xa4\xab|\xa4\xad|\xa4\xae|\x84\xae|\xa4\xaf|\xa4\xe0|\xa 4\xe1|\xa4\xe3|\xa4\xeb|\xa4\xec|\xa4\xef|\xa5\xa0|\xa5\xa1|\xa5\xa2|\x85\xa2|\x a5\xa3|\xa5\xa4|\xa5\xa5|\xa5\xa6|\xa5\xa7|\xa5\xa8|\xa5\xa9|\xa5\xaa|\xa5\xab|\ xa5\xac|\xa5\xad|\xa5\xae|\xa5\xaf|\xa5\xe0|\xa5\xe1|\xa5\xe2|\xa5\xe4|\xa5\xe5| \xa5\xe6|\xa5\xe7|\xa5\xe8|\xa5\xe9|\xa5\xef|\xf1\xac|\xf1\xad|\xf1\xe0|\xf1\xe2 |\xa6\xa0|\xa6\xa4|\xa6\xa5|\xa6\xa8|\xa6\xad|\xa6\xae|\xa6\xe3|\xa7\xa0|\x87\xa 0|\xa7\xa2|\xa7\xa4|\xa7\xa5|\xa7\xa8|\xa7\xab|\xa7\xac|\xa7\xad|\xa7\xae|\xa7\x e0|\xa7\xe3|\xa7\xeb|\xa8\xa0|\xa8\xa1|\xa8\xa2|\x88\xa2|\xa8\xa3|\xa8\xa4|\xa8\ xa5|\xa8\xa6|\xa8\xa7|\x88\xa7|\xa8\xa8|\xa8\xa9|\xa8\xaa|\xa8\xab|\xa8\xac|\xa8 \xad|\x88\xad|\xa8\xae|\xa8\xaf|\xa8\xe0|\xa8\xe1|\x88\xe1|\xa8\xe2|\xa8\xe4|\xa 8\xe5|\xa8\xe6|\xa8\xe7|\xa8\xe8|\xa8\xe9|\xa8\xee|\xa8\xef|\xa9\xab|\xa9\xad|\x a9\xae|\xa9\xe1|\xa9\xe2|\xaa\xa0|\x8a\xa0|\xaa\xa2|\xaa\xa5|\xaa\xa6|\xaa\xa8|\ x8a\xa8|\xaa\xab|\xaa\xad|\xaa\xae|\x8a\xae|\xaa\xe0|\x8a\xe0|\xaa\xe1|\xaa\xe2| \xaa\xe3|\x8a\xe3|\xaa\xe6|\xab\xa0|\x8b\xa0|\xab\xa3|\xab\xa5|\x8b\xa5|\xab\xf1 |\xab\xa6|\xab\xa8|\x8b\xa8|\xab\xaa|\xab\xab|\xab\xad|\xab\xae|\xab\xe1|\xab\xe 3|\xab\xeb|\xab\xec|\xab\xee|\xab\xef|\xac\xa0|\x8c\xa0|\xac\xa1|\xac\xa5|\x8c\x a5|\xac\xa8|\x8c\xa8|\xac\xab|\xac\xac|\xac\xad|\xac\xae|\x8c\xae|\xac\xaf|\xac\ xe1|\xac\xe3|\xac\xeb|\xac\xef|\xad\xa0|\x8d\xa0|\xad\xa3|\xad\xa4|\xad\xa5|\x8d \xa5|\xad\xa8|\x8d\xa8|\xad\xaa|\xad\xad|\xad\xae|\x8d\xae|\xad\xe0|\xad\xe1|\xa d\xe2|\xad\xe3|\xad\xe4|\xad\xe6|\xad\xe7|\xad\xeb|\xad\xec|\xad\xef|\xae\xa1|\x 8e\xa1|\xae\xa2|\xae\xa3|\xae\xa4|\xae\xa5|\xae\xa6|\xae\xa7|\xae\xa8|\xae\xa9|\ xae\xaa|\xae\xab|\xae\xac|\xae\xad|\xae\xae|\xae\xaf|\xae\xe0|\x8e\xe0|\xae\xe1| \x8e\xe1|\xae\xe2|\x8e\xe2|\xae\xe4|\xae\xe5|\xae\xe6|\xae\xe7|\xae\xe8|\xae\xe9 |\xae\xed|\xae\xee|\xae\xef|\xaf\xa0|\x8f\xa0|\xaf\xa5|\x8f\xa5|\xaf\xa8|\xaf\xa b|\xaf\xad|\xaf\xae|\x8f\xae|\xaf\xaf|\xaf\xe0|\x8f\xe0|\xaf\xe2|\xaf\xe3|\xaf\x eb|\xe0\xa0|\x90\xa0|\xe0\xa1|\xe0\xa2|\xe0\xa3|\xe0\xa4|\xe0\xa5|\x90\xa5|\xe0\ xa6|\xe0\xa8|\x90\xa8|\xe0\xaa|\xe0\xab|\xe0\xac|\xe0\xad|\xe0\xae|\x90\xae|\xe0 \xe0|\xe0\xe1|\xe0\xe2|\xe0\xe3|\x90\xe3|\xe0\xe5|\xe0\xe8|\xe0\xeb|\xe0\xec|\xe 0\xef|\xe1\xa0|\x91\xa0|\xe1\xa2|\x91\xa2|\xe1\xa5|\x91\xa5|\xe1\xf1|\xe1\xa8|\x 91\xa8|\xe1\xaa|\xe1\xab|\xe1\xac|\x91\xac|\xe1\xad|\xe1\xae|\x91\xae|\xe1\xaf|\ x91\xaf|\xe1\xe0|\x91\x90|\xe1\xe1|\x91\x91|\xe1\xe2|\x91\xe2|\xe1\xe3|\xe1\xe5| \xe1\xe7|\x91\x98|\xe1\xeb|\xe1\xec|\xe1\xef|\xe2\xa0|\x92\xa0|\xe2\xa2|\xe2\xa5 |\x92\xa5|\xe2\xa8|\xe2\xaa|\xe2\xab|\xe2\xad|\xe2\xae|\x92\xae|\xe2\xe0|\x92\xe 0|\xe2\xe1|\xe2\xe2|\xe2\xe3|\xe2\xeb|\xe2\xec|\xe2\xef|\xe3\xa0|\xe3\xa1|\xe3\x a2|\xe3\xa3|\xe3\xa4|\xe3\xa5|\xe3\xa6|\xe3\xa7|\xe3\xaa|\xe3\xab|\xe3\xac|\xe3\ xad|\xe3\xaf|\xe3\xe0|\xe3\xe1|\xe3\xe2|\xe3\xe5|\xe3\xe7|\xe3\xe8|\xe3\xe9|\xe3 \xee|\xe4\xa0|\x94\xa0|\xe4\xa5|\x94\xa5|\xe4\xa8|\x94\xa8|\x94\xab|\xe4\xae|\xe 4\xe0|\x94\xe0|\xe4\xe3|\xe5\xa0|\x95\xa0|\xe5\xa8|\xe5\xad|\xe5\xae|\xe5\xe0|\x e6\xa0|\xe6\xa5|\xe6\xa8|\xe6\xaa|\xe6\xeb|\xe7\xa0|\xe7\xa5|\x97\xa5|\xe7\xf1|\ xe7\xa8|\xe7\xaa|\xe7\xad|\xe7\xe2|\xe8\xa0|\x98\x80|\xe8\xa5|\xe8\xa8|\xe8\xaa| \xe8\xab|\xe8\xad|\xe8\xae|\xe8\xe2|\xe9\xa0|\xe9\xa5|\xe9\xa8|\xea\xa5|\xeb\xa2 |\xeb\xa5|\xeb\xa9|\xeb\xaa|\xeb\xab|\xeb\xac|\xeb\xad|\xeb\xaf|\xeb\xe0|\xeb\xe 1|\xeb\xe2|\xeb\xe5|\xeb\xe7|\xeb\xe8|\xec\xa1|\xec\xa5|\xec\xa7|\xec\xaa|\xec\x ac|\xec\xad|\xec\xe1|\xec\xe2|\xec\xe8|\xec\xee|\xec\xef|\xed\xaa|\xed\xab|\xed\ xad|\xed\xe2|\x9d\xe2|\xee\xa1|\xee\xa4|\xee\xe2|\xee\xe7|\xee\xe9|\xef\xa1|\xef \xa2|\xef\xa4|\xef\xa5|\xef\xa7|\xef\xab|\xef\xac|\xef\xad|\xef\xe0|\xef\xe1|\xe f\xe2|\xef\xe5|\xef\xe9|\xef\xee|\xa0|\x80|\xa1|\x81|\xa2|\x82|\xa3|\x83|\xa4|\x 84|\xa5|\x85|\xf1|\xf0|\xa6|\x86|\xa7|\x87|\xa8|\x88|\xa9|\x89|\xaa|\x8a|\xab|\x 8b|\xac|\x8c|\xad|\x8d|\xae|\x8e|\xaf|\x8f|\xe0|\x90|\xe1|\x91|\xe2|\x92|\xe3|\x 93|\xe4|\x94|\xe5|\x95|\xe6|\x96|\xe7|\x97|\xe8|\x98|\xe9|\x99|\xea|\x9a|\xeb|\x 9b|\xec|\x9c|\xed|\x9d|\xee|\x9e|\xef|\x9f)/g);
$t=@t;
$t=length(join("",map{length()==2?" ":" "}@t));
#print "score $t for 866\n";
if($t>$score){$res="cp866";$score=$t;}

@t=($str=~m/(\xc1\xc2|\xc1\xd7|\xe1\xd7|\xc1\xc7|\xc1\xc4|\xc1\xc5|\xc1\xd6|\xc1 \xda|\xc1\xc9|\xc1\xca|\xc1\xcb|\xc1\xcc|\xe1\xcc|\xc1\xcd|\xc1\xce|\xe1\xce|\xc 1\xd0|\xc1\xd2|\xe1\xd2|\xc1\xd3|\xc1\xd4|\xc1\xd5|\xc1\xc6|\xc1\xc8|\xc1\xc3|\x c1\xde|\xc1\xdb|\xc1\xdd|\xc1\xc0|\xc1\xd1|\xc2\xc1|\xe2\xc1|\xc2\xc5|\xe2\xc5|\ xc2\xc9|\xe2\xc9|\xc2\xcc|\xc2\xce|\xc2\xcf|\xe2\xcf|\xc2\xd2|\xe2\xd2|\xc2\xd3| \xc2\xd5|\xc2\xdd|\xc2\xdf|\xc2\xd9|\xd7\xc1|\xf7\xc1|\xd7\xc7|\xd7\xc5|\xf7\xc5 |\xd7\xc9|\xf7\xc9|\xd7\xcb|\xd7\xcc|\xf7\xcc|\xd7\xce|\xd7\xcf|\xf7\xcf|\xd7\xd 2|\xd7\xd3|\xd7\xd4|\xd7\xd5|\xd7\xdb|\xd7\xd9|\xd7\xd8|\xd7\xd1|\xc7\xc1|\xe7\x c1|\xc7\xc4|\xc7\xc5|\xe7\xc5|\xc7\xc9|\xc7\xcc|\xc7\xce|\xc7\xcf|\xe7\xcf|\xc7\ xd2|\xe7\xd2|\xc7\xd5|\xc4\xc1|\xe4\xc1|\xc4\xd7|\xc4\xc5|\xe4\xc5|\xc4\xd6|\xe4 \xd6|\xc4\xc9|\xc4\xcb|\xc4\xcc|\xc4\xce|\xc4\xcf|\xe4\xcf|\xc4\xd0|\xc4\xd2|\xc 4\xd3|\xc4\xd5|\xc4\xd9|\xc4\xd8|\xc4\xd1|\xc5\xc1|\xc5\xc2|\xc5\xd7|\xe5\xd7|\x c5\xc7|\xc5\xc4|\xc5\xc5|\xc5\xd6|\xc5\xda|\xc5\xc9|\xc5\xca|\xc5\xcb|\xc5\xcc|\ xc5\xcd|\xc5\xce|\xc5\xcf|\xc5\xd0|\xc5\xd2|\xc5\xd3|\xc5\xd4|\xc5\xc6|\xc5\xc8| \xc5\xc3|\xc5\xde|\xc5\xdb|\xc5\xdd|\xc5\xd1|\xa3\xcd|\xa3\xce|\xa3\xd2|\xa3\xd4 |\xd6\xc1|\xd6\xc4|\xd6\xc5|\xd6\xc9|\xd6\xce|\xd6\xcf|\xd6\xd5|\xda\xc1|\xfa\xc 1|\xda\xd7|\xda\xc4|\xda\xc5|\xda\xc9|\xda\xcc|\xda\xcd|\xda\xce|\xda\xcf|\xda\x d2|\xda\xd5|\xda\xd9|\xc9\xc1|\xc9\xc2|\xc9\xd7|\xe9\xd7|\xc9\xc7|\xc9\xc4|\xc9\ xc5|\xc9\xd6|\xc9\xda|\xe9\xda|\xc9\xc9|\xc9\xca|\xc9\xcb|\xc9\xcc|\xc9\xcd|\xc9 \xce|\xe9\xce|\xc9\xcf|\xc9\xd0|\xc9\xd2|\xc9\xd3|\xe9\xd3|\xc9\xd4|\xc9\xc6|\xc 9\xc8|\xc9\xc3|\xc9\xde|\xc9\xdb|\xc9\xdd|\xc9\xc0|\xc9\xd1|\xca\xcc|\xca\xce|\x ca\xcf|\xca\xd3|\xca\xd4|\xcb\xc1|\xeb\xc1|\xcb\xd7|\xcb\xc5|\xcb\xd6|\xcb\xc9|\ xeb\xc9|\xcb\xcc|\xcb\xce|\xcb\xcf|\xeb\xcf|\xcb\xd2|\xeb\xd2|\xcb\xd3|\xcb\xd4| \xcb\xd5|\xeb\xd5|\xcb\xc3|\xcc\xc1|\xec\xc1|\xcc\xc7|\xcc\xc5|\xec\xc5|\xcc\xa3 |\xcc\xd6|\xcc\xc9|\xec\xc9|\xcc\xcb|\xcc\xcc|\xcc\xce|\xcc\xcf|\xcc\xd3|\xcc\xd 5|\xcc\xd9|\xcc\xd8|\xcc\xc0|\xcc\xd1|\xcd\xc1|\xed\xc1|\xcd\xc2|\xcd\xc5|\xed\x c5|\xcd\xc9|\xed\xc9|\xcd\xcc|\xcd\xcd|\xcd\xce|\xcd\xcf|\xed\xcf|\xcd\xd0|\xcd\ xd3|\xcd\xd5|\xcd\xd9|\xcd\xd1|\xce\xc1|\xee\xc1|\xce\xc7|\xce\xc4|\xce\xc5|\xee \xc5|\xce\xc9|\xee\xc9|\xce\xcb|\xce\xce|\xce\xcf|\xee\xcf|\xce\xd2|\xce\xd3|\xc e\xd4|\xce\xd5|\xce\xc6|\xce\xc3|\xce\xde|\xce\xd9|\xce\xd8|\xce\xd1|\xcf\xc2|\x ef\xc2|\xcf\xd7|\xcf\xc7|\xcf\xc4|\xcf\xc5|\xcf\xd6|\xcf\xda|\xcf\xc9|\xcf\xca|\ xcf\xcb|\xcf\xcc|\xcf\xcd|\xcf\xce|\xcf\xcf|\xcf\xd0|\xcf\xd2|\xef\xd2|\xcf\xd3| \xef\xd3|\xcf\xd4|\xef\xd4|\xcf\xc6|\xcf\xc8|\xcf\xc3|\xcf\xde|\xcf\xdb|\xcf\xdd |\xcf\xdc|\xcf\xc0|\xcf\xd1|\xd0\xc1|\xf0\xc1|\xd0\xc5|\xf0\xc5|\xd0\xc9|\xd0\xc c|\xd0\xce|\xd0\xcf|\xf0\xcf|\xd0\xd0|\xd0\xd2|\xf0\xd2|\xd0\xd4|\xd0\xd5|\xd0\x d9|\xd2\xc1|\xf2\xc1|\xd2\xc2|\xd2\xd7|\xd2\xc7|\xd2\xc4|\xd2\xc5|\xf2\xc5|\xd2\ xd6|\xd2\xc9|\xf2\xc9|\xd2\xcb|\xd2\xcc|\xd2\xcd|\xd2\xce|\xd2\xcf|\xf2\xcf|\xd2 \xd2|\xd2\xd3|\xd2\xd4|\xd2\xd5|\xf2\xd5|\xd2\xc8|\xd2\xdb|\xd2\xd9|\xd2\xd8|\xd 2\xd1|\xd3\xc1|\xf3\xc1|\xd3\xd7|\xf3\xd7|\xd3\xc5|\xf3\xc5|\xd3\xa3|\xd3\xc9|\x f3\xc9|\xd3\xcb|\xd3\xcc|\xd3\xcd|\xf3\xcd|\xd3\xce|\xd3\xcf|\xf3\xcf|\xd3\xd0|\ xf3\xd0|\xd3\xd2|\xf3\xf2|\xd3\xd3|\xf3\xf3|\xd3\xd4|\xf3\xd4|\xd3\xd5|\xd3\xc8| \xd3\xde|\xf3\xfb|\xd3\xd9|\xd3\xd8|\xd3\xd1|\xd4\xc1|\xf4\xc1|\xd4\xd7|\xd4\xc5 |\xf4\xc5|\xd4\xc9|\xd4\xcb|\xd4\xcc|\xd4\xce|\xd4\xcf|\xf4\xcf|\xd4\xd2|\xf4\xd 2|\xd4\xd3|\xd4\xd4|\xd4\xd5|\xd4\xd9|\xd4\xd8|\xd4\xd1|\xd5\xc1|\xd5\xc2|\xd5\x d7|\xd5\xc7|\xd5\xc4|\xd5\xc5|\xd5\xd6|\xd5\xda|\xd5\xcb|\xd5\xcc|\xd5\xcd|\xd5\ xce|\xd5\xd0|\xd5\xd2|\xd5\xd3|\xd5\xd4|\xd5\xc8|\xd5\xde|\xd5\xdb|\xd5\xdd|\xd5 \xc0|\xc6\xc1|\xe6\xc1|\xc6\xc5|\xe6\xc5|\xc6\xc9|\xe6\xc9|\xe6\xcc|\xc6\xcf|\xc 6\xd2|\xe6\xd2|\xc6\xd5|\xc8\xc1|\xe8\xc1|\xc8\xc9|\xc8\xce|\xc8\xcf|\xc8\xd2|\x c3\xc1|\xc3\xc5|\xc3\xc9|\xc3\xcb|\xc3\xd9|\xde\xc1|\xde\xc5|\xfe\xc5|\xde\xa3|\ xde\xc9|\xde\xcb|\xde\xce|\xde\xd4|\xdb\xc1|\xfb\xe1|\xdb\xc5|\xdb\xc9|\xdb\xcb| \xdb\xcc|\xdb\xce|\xdb\xcf|\xdb\xd4|\xdd\xc1|\xdd\xc5|\xdd\xc9|\xdf\xc5|\xd9\xd7 |\xd9\xc5|\xd9\xca|\xd9\xcb|\xd9\xcc|\xd9\xcd|\xd9\xce|\xd9\xd0|\xd9\xd2|\xd9\xd 3|\xd9\xd4|\xd9\xc8|\xd9\xde|\xd9\xdb|\xd8\xc2|\xd8\xc5|\xd8\xda|\xd8\xcb|\xd8\x cd|\xd8\xce|\xd8\xd3|\xd8\xd4|\xd8\xdb|\xd8\xc0|\xd8\xd1|\xdc\xcb|\xdc\xcc|\xdc\ xce|\xdc\xd4|\xfc\xd4|\xc0\xc2|\xc0\xc4|\xc0\xd4|\xc0\xde|\xc0\xdd|\xd1\xc2|\xd1 \xd7|\xd1\xc4|\xd1\xc5|\xd1\xda|\xd1\xcc|\xd1\xcd|\xd1\xce|\xd1\xd2|\xd1\xd3|\xd 1\xd4|\xd1\xc8|\xd1\xdd|\xd1\xc0|\xc1|\xe1|\xc2|\xe2|\xd7|\xf7|\xc7|\xe7|\xc4|\x e4|\xc5|\xe5|\xa3|\xb3|\xd6|\xf6|\xda|\xfa|\xc9|\xe9|\xca|\xea|\xcb|\xeb|\xcc|\x ec|\xcd|\xed|\xce|\xee|\xcf|\xef|\xd0|\xf0|\xd2|\xf2|\xd3|\xf3|\xd4|\xf4|\xd5|\x f5|\xc6|\xe6|\xc8|\xe8|\xc3|\xe3|\xde|\xfe|\xdb|\xfb|\xdd|\xfd|\xdf|\xff|\xd9|\x f9|\xd8|\xf8|\xdc|\xfc|\xc0|\xe0|\xd1|\xf1)/g);
$t=@t;
$t=length(join("",map{length()==2?" ":" "}@t));
#print "score $t for koi8r\n";
if($t>$score){$res="koi8r";$score=$t;}

@t=($str=~m/(\xd0\xd1|\xd0\xd2|\xb0\xd2|\xd0\xd3|\xd0\xd4|\xd0\xd5|\xd0\xd6|\xd0 \xd7|\xd0\xd8|\xd0\xd9|\xd0\xda|\xd0\xdb|\xb0\xdb|\xd0\xdc|\xd0\xdd|\xb0\xdd|\xd 0\xdf|\xd0\xe0|\xb0\xe0|\xd0\xe1|\xd0\xe2|\xd0\xe3|\xd0\xe4|\xd0\xe5|\xd0\xe6|\x d0\xe7|\xd0\xe8|\xd0\xe9|\xd0\xee|\xd0\xef|\xd1\xd0|\xb1\xd0|\xd1\xd5|\xb1\xd5|\ xd1\xd8|\xb1\xd8|\xd1\xdb|\xd1\xdd|\xd1\xde|\xb1\xde|\xd1\xe0|\xb1\xe0|\xd1\xe1| \xd1\xe3|\xd1\xe9|\xd1\xea|\xd1\xeb|\xd2\xd0|\xb2\xd0|\xd2\xd3|\xd2\xd5|\xb2\xd5 |\xd2\xd8|\xb2\xd8|\xd2\xda|\xd2\xdb|\xb2\xdb|\xd2\xdd|\xd2\xde|\xb2\xde|\xd2\xe 0|\xd2\xe1|\xd2\xe2|\xd2\xe3|\xd2\xe8|\xd2\xeb|\xd2\xec|\xd2\xef|\xd3\xd0|\xb3\x d0|\xd3\xd4|\xd3\xd5|\xb3\xd5|\xd3\xd8|\xd3\xdb|\xd3\xdd|\xd3\xde|\xb3\xde|\xd3\ xe0|\xb3\xe0|\xd3\xe3|\xd4\xd0|\xb4\xd0|\xd4\xd2|\xd4\xd5|\xb4\xd5|\xd4\xd6|\xb4 \xd6|\xd4\xd8|\xd4\xda|\xd4\xdb|\xd4\xdd|\xd4\xde|\xb4\xde|\xd4\xdf|\xd4\xe0|\xd 4\xe1|\xd4\xe3|\xd4\xeb|\xd4\xec|\xd4\xef|\xd5\xd0|\xd5\xd1|\xd5\xd2|\xb5\xd2|\x d5\xd3|\xd5\xd4|\xd5\xd5|\xd5\xd6|\xd5\xd7|\xd5\xd8|\xd5\xd9|\xd5\xda|\xd5\xdb|\ xd5\xdc|\xd5\xdd|\xd5\xde|\xd5\xdf|\xd5\xe0|\xd5\xe1|\xd5\xe2|\xd5\xe4|\xd5\xe5| \xd5\xe6|\xd5\xe7|\xd5\xe8|\xd5\xe9|\xd5\xef|\xf1\xdc|\xf1\xdd|\xf1\xe0|\xf1\xe2 |\xd6\xd0|\xd6\xd4|\xd6\xd5|\xd6\xd8|\xd6\xdd|\xd6\xde|\xd6\xe3|\xd7\xd0|\xb7\xd 0|\xd7\xd2|\xd7\xd4|\xd7\xd5|\xd7\xd8|\xd7\xdb|\xd7\xdc|\xd7\xdd|\xd7\xde|\xd7\x e0|\xd7\xe3|\xd7\xeb|\xd8\xd0|\xd8\xd1|\xd8\xd2|\xb8\xd2|\xd8\xd3|\xd8\xd4|\xd8\ xd5|\xd8\xd6|\xd8\xd7|\xb8\xd7|\xd8\xd8|\xd8\xd9|\xd8\xda|\xd8\xdb|\xd8\xdc|\xd8 \xdd|\xb8\xdd|\xd8\xde|\xd8\xdf|\xd8\xe0|\xd8\xe1|\xb8\xe1|\xd8\xe2|\xd8\xe4|\xd 8\xe5|\xd8\xe6|\xd8\xe7|\xd8\xe8|\xd8\xe9|\xd8\xee|\xd8\xef|\xd9\xdb|\xd9\xdd|\x d9\xde|\xd9\xe1|\xd9\xe2|\xda\xd0|\xba\xd0|\xda\xd2|\xda\xd5|\xda\xd6|\xda\xd8|\ xba\xd8|\xda\xdb|\xda\xdd|\xda\xde|\xba\xde|\xda\xe0|\xba\xe0|\xda\xe1|\xda\xe2| \xda\xe3|\xba\xe3|\xda\xe6|\xdb\xd0|\xbb\xd0|\xdb\xd3|\xdb\xd5|\xbb\xd5|\xdb\xf1 |\xdb\xd6|\xdb\xd8|\xbb\xd8|\xdb\xda|\xdb\xdb|\xdb\xdd|\xdb\xde|\xdb\xe1|\xdb\xe 3|\xdb\xeb|\xdb\xec|\xdb\xee|\xdb\xef|\xdc\xd0|\xbc\xd0|\xdc\xd1|\xdc\xd5|\xbc\x d5|\xdc\xd8|\xbc\xd8|\xdc\xdb|\xdc\xdc|\xdc\xdd|\xdc\xde|\xbc\xde|\xdc\xdf|\xdc\ xe1|\xdc\xe3|\xdc\xeb|\xdc\xef|\xdd\xd0|\xbd\xd0|\xdd\xd3|\xdd\xd4|\xdd\xd5|\xbd \xd5|\xdd\xd8|\xbd\xd8|\xdd\xda|\xdd\xdd|\xdd\xde|\xbd\xde|\xdd\xe0|\xdd\xe1|\xd d\xe2|\xdd\xe3|\xdd\xe4|\xdd\xe6|\xdd\xe7|\xdd\xeb|\xdd\xec|\xdd\xef|\xde\xd1|\x be\xd1|\xde\xd2|\xde\xd3|\xde\xd4|\xde\xd5|\xde\xd6|\xde\xd7|\xde\xd8|\xde\xd9|\ xde\xda|\xde\xdb|\xde\xdc|\xde\xdd|\xde\xde|\xde\xdf|\xde\xe0|\xbe\xe0|\xde\xe1| \xbe\xe1|\xde\xe2|\xbe\xe2|\xde\xe4|\xde\xe5|\xde\xe6|\xde\xe7|\xde\xe8|\xde\xe9 |\xde\xed|\xde\xee|\xde\xef|\xdf\xd0|\xbf\xd0|\xdf\xd5|\xbf\xd5|\xdf\xd8|\xdf\xd b|\xdf\xdd|\xdf\xde|\xbf\xde|\xdf\xdf|\xdf\xe0|\xbf\xe0|\xdf\xe2|\xdf\xe3|\xdf\x eb|\xe0\xd0|\xc0\xd0|\xe0\xd1|\xe0\xd2|\xe0\xd3|\xe0\xd4|\xe0\xd5|\xc0\xd5|\xe0\ xd6|\xe0\xd8|\xc0\xd8|\xe0\xda|\xe0\xdb|\xe0\xdc|\xe0\xdd|\xe0\xde|\xc0\xde|\xe0 \xe0|\xe0\xe1|\xe0\xe2|\xe0\xe3|\xc0\xe3|\xe0\xe5|\xe0\xe8|\xe0\xeb|\xe0\xec|\xe 0\xef|\xe1\xd0|\xc1\xd0|\xe1\xd2|\xc1\xd2|\xe1\xd5|\xc1\xd5|\xe1\xf1|\xe1\xd8|\x c1\xd8|\xe1\xda|\xe1\xdb|\xe1\xdc|\xc1\xdc|\xe1\xdd|\xe1\xde|\xc1\xde|\xe1\xdf|\ xc1\xdf|\xe1\xe0|\xc1\xc0|\xe1\xe1|\xc1\xc1|\xe1\xe2|\xc1\xe2|\xe1\xe3|\xe1\xe5| \xe1\xe7|\xc1\xc8|\xe1\xeb|\xe1\xec|\xe1\xef|\xe2\xd0|\xc2\xd0|\xe2\xd2|\xe2\xd5 |\xc2\xd5|\xe2\xd8|\xe2\xda|\xe2\xdb|\xe2\xdd|\xe2\xde|\xc2\xde|\xe2\xe0|\xc2\xe 0|\xe2\xe1|\xe2\xe2|\xe2\xe3|\xe2\xeb|\xe2\xec|\xe2\xef|\xe3\xd0|\xe3\xd1|\xe3\x d2|\xe3\xd3|\xe3\xd4|\xe3\xd5|\xe3\xd6|\xe3\xd7|\xe3\xda|\xe3\xdb|\xe3\xdc|\xe3\ xdd|\xe3\xdf|\xe3\xe0|\xe3\xe1|\xe3\xe2|\xe3\xe5|\xe3\xe7|\xe3\xe8|\xe3\xe9|\xe3 \xee|\xe4\xd0|\xc4\xd0|\xe4\xd5|\xc4\xd5|\xe4\xd8|\xc4\xd8|\xc4\xdb|\xe4\xde|\xe 4\xe0|\xc4\xe0|\xe4\xe3|\xe5\xd0|\xc5\xd0|\xe5\xd8|\xe5\xdd|\xe5\xde|\xe5\xe0|\x e6\xd0|\xe6\xd5|\xe6\xd8|\xe6\xda|\xe6\xeb|\xe7\xd0|\xe7\xd5|\xc7\xd5|\xe7\xf1|\ xe7\xd8|\xe7\xda|\xe7\xdd|\xe7\xe2|\xe8\xd0|\xc8\xb0|\xe8\xd5|\xe8\xd8|\xe8\xda| \xe8\xdb|\xe8\xdd|\xe8\xde|\xe8\xe2|\xe9\xd0|\xe9\xd5|\xe9\xd8|\xea\xd5|\xeb\xd2 |\xeb\xd5|\xeb\xd9|\xeb\xda|\xeb\xdb|\xeb\xdc|\xeb\xdd|\xeb\xdf|\xeb\xe0|\xeb\xe 1|\xeb\xe2|\xeb\xe5|\xeb\xe7|\xeb\xe8|\xec\xd1|\xec\xd5|\xec\xd7|\xec\xda|\xec\x dc|\xec\xdd|\xec\xe1|\xec\xe2|\xec\xe8|\xec\xee|\xec\xef|\xed\xda|\xed\xdb|\xed\ xdd|\xed\xe2|\xcd\xe2|\xee\xd1|\xee\xd4|\xee\xe2|\xee\xe7|\xee\xe9|\xef\xd1|\xef \xd2|\xef\xd4|\xef\xd5|\xef\xd7|\xef\xdb|\xef\xdc|\xef\xdd|\xef\xe0|\xef\xe1|\xe f\xe2|\xef\xe5|\xef\xe9|\xef\xee|\xd0|\xb0|\xd1|\xb1|\xd2|\xb2|\xd3|\xb3|\xd4|\x b4|\xd5|\xb5|\xf1|\xa1|\xd6|\xb6|\xd7|\xb7|\xd8|\xb8|\xd9|\xb9|\xda|\xba|\xdb|\x bb|\xdc|\xbc|\xdd|\xbd|\xde|\xbe|\xdf|\xbf|\xe0|\xc0|\xe1|\xc1|\xe2|\xc2|\xe3|\x c3|\xe4|\xc4|\xe5|\xc5|\xe6|\xc6|\xe7|\xc7|\xe8|\xc8|\xe9|\xc9|\xea|\xca|\xeb|\x cb|\xec|\xcc|\xed|\xcd|\xee|\xce|\xef|\xcf)/g);
$t=length(join("",map{length()==2?" ":" "}@t));
#print "score $t for iso\n";
if($t>$score){$res="iso-8859-5";$score=$t;}

@t=($str=~m/(\xe0\xe1|\xe0\xe2|\x80\xe2|\xe0\xe3|\xe0\xe4|\xe0\xe5|\xe0\xe6|\xe0 \xe7|\xe0\xe8|\xe0\xe9|\xe0\xea|\xe0\xeb|\x80\xeb|\xe0\xec|\xe0\xed|\x80\xed|\xe 0\xef|\xe0\xf0|\x80\xf0|\xe0\xf1|\xe0\xf2|\xe0\xf3|\xe0\xf4|\xe0\xf5|\xe0\xf6|\x e0\xf7|\xe0\xf8|\xe0\xf9|\xe0\xfe|\xe0\xdf|\xe1\xe0|\x81\xe0|\xe1\xe5|\x81\xe5|\ xe1\xe8|\x81\xe8|\xe1\xeb|\xe1\xed|\xe1\xee|\x81\xee|\xe1\xf0|\x81\xf0|\xe1\xf1| \xe1\xf3|\xe1\xf9|\xe1\xfa|\xe1\xfb|\xe2\xe0|\x82\xe0|\xe2\xe3|\xe2\xe5|\x82\xe5 |\xe2\xe8|\x82\xe8|\xe2\xea|\xe2\xeb|\x82\xeb|\xe2\xed|\xe2\xee|\x82\xee|\xe2\xf 0|\xe2\xf1|\xe2\xf2|\xe2\xf3|\xe2\xf8|\xe2\xfb|\xe2\xfc|\xe2\xdf|\xe3\xe0|\x83\x e0|\xe3\xe4|\xe3\xe5|\x83\xe5|\xe3\xe8|\xe3\xeb|\xe3\xed|\xe3\xee|\x83\xee|\xe3\ xf0|\x83\xf0|\xe3\xf3|\xe4\xe0|\x84\xe0|\xe4\xe2|\xe4\xe5|\x84\xe5|\xe4\xe6|\x84 \xe6|\xe4\xe8|\xe4\xea|\xe4\xeb|\xe4\xed|\xe4\xee|\x84\xee|\xe4\xef|\xe4\xf0|\xe 4\xf1|\xe4\xf3|\xe4\xfb|\xe4\xfc|\xe4\xdf|\xe5\xe0|\xe5\xe1|\xe5\xe2|\x85\xe2|\x e5\xe3|\xe5\xe4|\xe5\xe5|\xe5\xe6|\xe5\xe7|\xe5\xe8|\xe5\xe9|\xe5\xea|\xe5\xeb|\ xe5\xec|\xe5\xed|\xe5\xee|\xe5\xef|\xe5\xf0|\xe5\xf1|\xe5\xf2|\xe5\xf4|\xe5\xf5| \xe5\xf6|\xe5\xf7|\xe5\xf8|\xe5\xf9|\xe5\xdf|\xde\xec|\xde\xed|\xde\xf0|\xde\xf2 |\xe6\xe0|\xe6\xe4|\xe6\xe5|\xe6\xe8|\xe6\xed|\xe6\xee|\xe6\xf3|\xe7\xe0|\x87\xe 0|\xe7\xe2|\xe7\xe4|\xe7\xe5|\xe7\xe8|\xe7\xeb|\xe7\xec|\xe7\xed|\xe7\xee|\xe7\x f0|\xe7\xf3|\xe7\xfb|\xe8\xe0|\xe8\xe1|\xe8\xe2|\x88\xe2|\xe8\xe3|\xe8\xe4|\xe8\ xe5|\xe8\xe6|\xe8\xe7|\x88\xe7|\xe8\xe8|\xe8\xe9|\xe8\xea|\xe8\xeb|\xe8\xec|\xe8 \xed|\x88\xed|\xe8\xee|\xe8\xef|\xe8\xf0|\xe8\xf1|\x88\xf1|\xe8\xf2|\xe8\xf4|\xe 8\xf5|\xe8\xf6|\xe8\xf7|\xe8\xf8|\xe8\xf9|\xe8\xfe|\xe8\xdf|\xe9\xeb|\xe9\xed|\x e9\xee|\xe9\xf1|\xe9\xf2|\xea\xe0|\x8a\xe0|\xea\xe2|\xea\xe5|\xea\xe6|\xea\xe8|\ x8a\xe8|\xea\xeb|\xea\xed|\xea\xee|\x8a\xee|\xea\xf0|\x8a\xf0|\xea\xf1|\xea\xf2| \xea\xf3|\x8a\xf3|\xea\xf6|\xeb\xe0|\x8b\xe0|\xeb\xe3|\xeb\xe5|\x8b\xe5|\xeb\xde |\xeb\xe6|\xeb\xe8|\x8b\xe8|\xeb\xea|\xeb\xeb|\xeb\xed|\xeb\xee|\xeb\xf1|\xeb\xf 3|\xeb\xfb|\xeb\xfc|\xeb\xfe|\xeb\xdf|\xec\xe0|\x8c\xe0|\xec\xe1|\xec\xe5|\x8c\x e5|\xec\xe8|\x8c\xe8|\xec\xeb|\xec\xec|\xec\xed|\xec\xee|\x8c\xee|\xec\xef|\xec\ xf1|\xec\xf3|\xec\xfb|\xec\xdf|\xed\xe0|\x8d\xe0|\xed\xe3|\xed\xe4|\xed\xe5|\x8d \xe5|\xed\xe8|\x8d\xe8|\xed\xea|\xed\xed|\xed\xee|\x8d\xee|\xed\xf0|\xed\xf1|\xe d\xf2|\xed\xf3|\xed\xf4|\xed\xf6|\xed\xf7|\xed\xfb|\xed\xfc|\xed\xdf|\xee\xe1|\\ xe3|\xee\xe4|\xee\xe5|\xee\xe6|\xee\xe7|\xee\xe8|\xee\xe9|\xee\xea|\xee\xeb|\xee \xec|\xee\xed|\xee\xee|\xee\xef|\xee\xf0|\x8e\xf0|\xee\xf1|\x8e\xf1|\xee\xf2|\x8 e\xf2|\xee\xf4|\xee\xf5|\xee\xf6|\xee\xf7|\xee\xf8|\xee\xf9|\xee\xfd|\xee\xfe|\x ee\xdf|\xef\xe0|\x8f\xe0|\xef\xe5|\x8f\xe5|\xef\xe8|\xef\xeb|\xef\xed|\xef\xee|\ x8f\xee|\xef\xef|\xef\xf0|\x8f\xf0|\xef\xf2|\xef\xf3|\xef\xfb|\xf0\xe0|\x90\xe0| \xf0\xe1|\xf0\xe2|\xf0\xe3|\xf0\xe4|\xf0\xe5|\x90\xe5|\xf0\xe6|\xf0\xe8|\x90\xe8 |\xf0\xea|\xf0\xeb|\xf0\xec|\xf0\xed|\xf0\xee|\x90\xee|\xf0\xf0|\xf0\xf1|\xf0\xf 2|\xf0\xf3|\x90\xf3|\xf0\xf5|\xf0\xf8|\xf0\xfb|\xf0\xfc|\xf0\xdf|\xf1\xe0|\x91\x e0|\xf1\xe2|\x91\xe2|\xf1\xe5|\x91\xe5|\xf1\xde|\xf1\xe8|\x91\xe8|\xf1\xea|\xf1\ xeb|\xf1\xec|\x91\xec|\xf1\xed|\xf1\xee|\x91\xee|\xf1\xef|\x91\xef|\xf1\xf0|\x91 \x90|\xf1\xf1|\x91\x91|\xf1\xf2|\x91\xf2|\xf1\xf3|\xf1\xf5|\xf1\xf7|\x91\x98|\xf 1\xfb|\xf1\xfc|\xf1\xdf|\xf2\xe0|\x92\xe0|\xf2\xe2|\xf2\xe5|\x92\xe5|\xf2\xe8|\x f2\xea|\xf2\xeb|\xf2\xed|\xf2\xee|\x92\xee|\xf2\xf0|\x92\xf0|\xf2\xf1|\xf2\xf2|\ xf2\xf3|\xf2\xfb|\xf2\xfc|\xf2\xdf|\xf3\xe0|\xf3\xe1|\xf3\xe2|\xf3\xe3|\xf3\xe4| \xf3\xe5|\xf3\xe6|\xf3\xe7|\xf3\xea|\xf3\xeb|\xf3\xec|\xf3\xed|\xf3\xef|\xf3\xf0 |\xf3\xf1|\xf3\xf2|\xf3\xf5|\xf3\xf7|\xf3\xf8|\xf3\xf9|\xf3\xfe|\xf4\xe0|\x94\xe 0|\xf4\xe5|\x94\xe5|\xf4\xe8|\x94\xe8|\x94\xeb|\xf4\xee|\xf4\xf0|\x94\xf0|\xf4\x f3|\xf5\xe0|\x95\xe0|\xf5\xe8|\xf5\xed|\xf5\xee|\xf5\xf0|\xf6\xe0|\xf6\xe5|\xf6\ xe8|\xf6\xea|\xf6\xfb|\xf7\xe0|\xf7\xe5|\x97\xe5|\xf7\xde|\xf7\xe8|\xf7\xea|\xf7 \xed|\xf7\xf2|\xf8\xe0|\x98\x80|\xf8\xe5|\xf8\xe8|\xf8\xea|\xf8\xeb|\xf8\xed|\xf 8\xee|\xf8\xf2|\xf9\xe0|\xf9\xe5|\xf9\xe8|\xfa\xe5|\xfb\xe2|\xfb\xe5|\xfb\xe9|\x fb\xea|\xfb\xeb|\xfb\xec|\xfb\xed|\xfb\xef|\xfb\xf0|\xfb\xf1|\xfb\xf2|\xfb\xf5|\ xfb\xf7|\xfb\xf8|\xfc\xe1|\xfc\xe5|\xfc\xe7|\xfc\xea|\xfc\xec|\xfc\xed|\xfc\xf1| \xfc\xf2|\xfc\xf8|\xfc\xfe|\xfc\xdf|\xfd\xea|\xfd\xeb|\xfd\xed|\xfd\xf2|\x9d\xf2 |\xfe\xe1|\xfe\xe4|\xfe\xf2|\xfe\xf7|\xfe\xf9|\xdf\xe1|\xdf\xe2|\xdf\xe4|\xdf\xe 5|\xdf\xe7|\xdf\xeb|\xdf\xec|\xdf\xed|\xdf\xf0|\xdf\xf1|\xdf\xf2|\xdf\xf5|\xdf\x f9|\xdf\xfe|\xe0|\x80|\xe1|\x81|\xe2|\x82|\xe3|\x83|\xe4|\x84|\xe5|\x85|\xde|\xd d|\xe6|\x86|\xe7|\x87|\xe8|\x88|\xe9|\x89|\xea|\x8a|\xeb|\x8b|\xec|\x8c|\xed|\x8 d|\xee|\x8e|\xef|\x8f|\xf0|\x90|\xf1|\x91|\xf2|\x92|\xf3|\x93|\xf4|\x94|\xf5|\x9 5|\xf6|\x96|\xf7|\x97|\xf8|\x98|\xf9|\x99|\xfa|\x9a|\xfb|\x9b|\xfc|\x9c|\xfd|\x9 d|\xfe|\x9e|\xdf|\x9f)/g);
$t=@t;
$t=length(join("",map{length()==2?" ":" "}@t));
#print "score $t for MacCyrillic\n";
if($t>$score){$res="MacCyrillic";$score=$t;}

return($res,$t);
}

}

1. L29Ah 23.10.2011 14:59 tkabber-home

libenca?

2. saranskL29Ah /1 23.10.2011 15:02 QIP

дает явно не 5% ошибок, увы

Do you really want to delete ?