encoding in Objekten

29/08/2010 - 19:11 von praetor | Report spam
Hallo,

schon wieder Encoding :( Ein Script übergibt an ein »objektorientes« Modul
einen vorschriftsmàßig dekodierten Text. Eine Modul-Methode soll den Text
ausgeben (vorschriftsmàßig encodiert). Das geht gut, solange die Ausgabe
auch utf8-kodiert wird. Wenn sie in Latin1 kodiert wird, erscheinen
anstelle einiger Sonderzeichen (z. B. “”—) Fragezeichen. Das soll
vielleicht so sein, weils die Zeichen halt in Latin1 nicht gibt. Kein
Problem, dachte ich mir, mache ich vor der Ausgabe einen Zeichentausch. Das
Problem ist nur: meine Ersetzungsbefehle treffen nicht. Warum?

/- main.pl
| #!/usr/bin/perl -w;
| use strict;
| use warnings;
| use utf8;
| use Encoding;
| use myModul;
|
| my str = "“”—";
| my $o = new myModul;
| $o->drucke($str);
\

/- myModul.pm
| package myModul;
| use utf8;
| use Encode;
|
| sub new {
| ...
| }
|
| sub drucke {
| my $self = shift;
| my $str = shift;
| $str =~ s/“/ xxx /sg; # ¿
| $str =~ s/”/ xxx /sg; # ¿
| $str =~ s/—/ xxx /sg; # ¿
| open (OUT, ">>", $self->text_file_name);
| print OUT encode("latin1", $str) or croak $!;
| ...
\

Ergebnis in der Ausgabedatei:
???
 

Lesen sie die antworten

#1 praetor
29/08/2010 - 19:17 | Warnen spam
praetor wrote:

meine Ersetzungsbefehle treffen nicht. Warum?



Ich nehme alles zurück. »use utf8;« in der Moduldatei hatte gefehlt.
sorry

Ähnliche fragen