Ich poste hier mal den gesamten Code - Abschnitt.
Ich denke mittlerweile, dass die Daten schon beim einlesen falsch interpretiert werden.
Code:
my $i = 0;
my $Text;
find(\&wanted, '/home/craano/Desktop/Musik');
sub wanted {
if (m/mp3/ || m/MP3/){
$i++;
my $mp3 = MP3::Tag->new($_);
$mp3->config("autoinfo","ID3v1","ID3v2");
my ($title, $track, $artist, $album, $comment, $year, $genre) = $mp3->autoinfo();
$Text = $i." ; ".$artist." ; ".$album." ; ".$track." ; ".$title." ; ".$year." \n";
$Text =~ s/ä/ae/g;
$Text =~ s/ö/oe/g;
$Text =~ s/ü/ue/g;
$Text =~ s/Ä/Ae/g;
$Text =~ s/Ö/Oe/g;
$Text =~ s/Ü/Ue/g;
$Text =~ s/ß/sz/g;
print $Text;
}
}
Die Ausgabe von print ist verunstaltet. Jeder Umlaut wird so dargestellt. " � ". Eine weitere sinnvolle Verwendung von $Text ist so leider nicht möglich.
Ich hoffe jemand von Euch hat noch eine Idee.
Wenn ich die Ausgabe in eine Datei pipe, dann kann ein Editor (gedit) die Sonderzeichen darstellen! Ein less "datei" zeigt mir die Sonderzeichen nicht an, sondern substituiert diese. Ein "ö" wird zu <F6> und ein "ä" wird als <E4> angezeigt.
Was bedeutet das. Wie bekomme ich die Umlaute auf der Shell richtig angezeigt, dass ist nötig, weil ich aus diesen Informationen Dateinamen generieren will, das ist ohne richtige Sonderzeichen wenig sinnvoll.
btw: Wenn ich direkt ein
ausgeben lasse, dann werden die Zeichen auch in der Shell richtig dargestellt.
Grüße.
craano.
Lesezeichen