> Given: unicode strings ($ustr) like:
>     World/EspaA±ol/Artes
>     World/FranA§ais/Arts
>     World/Russian/??N???N?N?N?N‚????
> 
> Problem: convert to that language's encoding.

Here (for Russian unicode strings):

use strict;
my $rt =
'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя';
my $ru = '';
for (
 
'100411041204130414041504010416041704180419041A041B041C041D041E041F042004210
4220423042404250426042704280429042A042B042C042D042E042F04',
 
'300431043204330434043504510436043704380439043A043B043C043D043E043F044004410
4420443044404450446044704480449044A044B044C044D044E044F04'
) {
  $ru .= pack('H*',$_);
}
for my $i (0..length($rt)-1) {
  $_{substr($rt,$i,1)} = substr($ru,2*$i,1).substr($ru,2*$i+1,1);
}
my %a = reverse %_;
binmode STDIN;
for (<STDIN>) {
  chomp;
  print map({exists $a{$_}?$a{$_}:$_} grep {$_ ne ''} split /(..)/),"\n";
}

<!ENTITY Vadim REALLIFE "Vadim V.Konovalov, St.Petersburg, Russia">
&Vadim;

Reply via email to