Helmut Weber: Probleme mit Umlauten beim auslesen von RSS-News

Hallo SelfForum,

ich experimentiere gerade an meiner neuen Website und stosse auf ein eigenartiges Phänomen.

Auf meine Website möchte ich ein Teil der heise-News darstellen, welche ich per RSS empfange.

Sobald ich jedoch die heise-News auf meiner Seite einbinde, werden alle Umlaute auf der kompletten Seite falsch dargestellt. Auch die Textinhalte, die gar nicht per RSS erzeugt werden.

Auf einer Seite, die ich ohne heise-News erstellt habe, werden die Umlaute richtig dargestellt, obwohl beide Seite aus der gleichen Vorlage generiert werden!

Im Quelltext werden die Umlaute komischerweise auf beiden Seiten richtig übertragen.

Hier zwei Links zum vergleich:
http://www.weberhelmut.de/cgi-bin/index.pl
http://www.weberhelmut.de/cgi-bin/news.pl

Die News erzeuge ich mit folgendem kleinen Perl-Code:

Verbindungsdaten für den News-Server

my $news_server = 'http://www.heise.de/newsticker/heise.rdf';
my $no_of_news = 5; # Anzahl der News, die dargestellt werden

Verbindung zum News-Server aufbauen

my $RSS  = new XML::RSS(encoding => 'ISO-8859-1');;
my $content = get( $news_server );
if ( $content ) {
 $RSS->parse( $content );
}

my $i=0 ;
my @news = ();
foreach my $item (@{$RSS->{'items'}}) {
 next unless defined($item->{'title'}) && defined($item->{'link'});
 last if ($i>=$no_of_news);

# Die E-Mail-Informationen in eine Hash-Liste aufnehmen
 push @news, { TITLE => $item->{'title'}, LINK => $item->{'link'} };

$i++ ;
}

Das Array @news übergebe ich per HTML::Template an meine Vorlage.

Hat jemand schon ähnliche Probleme mit Umlauten gehabt?
Bin für jede Hilfe dankbar.

Gruß
Helmut Weber

--
-------------------------------------------
Mode ist eine Variable, Stil eine Konstante
  1. http://www.weberhelmut.de/cgi-bin/news.pl

    Das Dokument ist UTF-8 kodiert, du deklarierst aber ISO-8859-1. Vergiss ISO-8859-1 und benutze und deklariere überall UTF-8 und du hast keine Probleme mehr.

    1. Hallo Björn,

      Danke für Deine Hilfe.
      Ich habe jetzt den Zeichensatz UTF-8 in den Meta-Angaben deklariert, und die Website mit den News wird auch einwandfrei dargestellt:
      http://www.weberhelmut.de/cgi-bin/news.pl

      Nur jetzt habe ich ein Problem bei meiner Index-Seite (:
      http://www.weberhelmut.de/cgi-bin/index.pl

      Die Meta-Angaben werden aus einer zentralen Datei in jedes Dokument eingefügt, deshalb habe ich für alle Dokumente den gleichen Zeichensatz.

      Wie bekomme ich jetzt meine index.pl-Seite hin, das diese auch richtig im UTF-8 Zeichenformat dargestellt wird?

      Wie kommt es eigentlich, das mein news-Dokument auf einmal UTF-8 kodiert ist? Ich exportiere mit dem XML::RSS doch nur die Text-Inhalte der heise-News in mein HTML-Dokument, und importiere nicht das gesamte XML-Format.

      Gruß
      Helmut Weber

      --
      -------------------------------------------
      Mode ist eine Variable, Stil eine Konstante
      1. Wie bekomme ich jetzt meine index.pl-Seite hin, das diese auch richtig im UTF-8 Zeichenformat dargestellt wird?

        Transkodieren, dafür gibt es iconv, GNU recode, IBMs uconv, Perl-Module wie Encode.pm, Unicode::String, Unicode::Map, Unicode::Map8, ...

        Wie kommt es eigentlich, das mein news-Dokument auf einmal UTF-8 kodiert ist? Ich exportiere mit dem XML::RSS doch nur die Text-Inhalte der heise-News in mein HTML-Dokument, und importiere nicht das gesamte XML-Format.

        Die XML-Parser für Perl transkodieren alles zu UTF-8. Ggf. willst du http://perl-xml.sourceforge.net/faq/#encodings lesen.

        1. Hallo Björn,

          Mensch, jetzt seh' ich es erst! ich habe den ganzen Beispieltext einfach nur in meine Webseite hinein kopiert mit allen ös und äs ;)

          Sonst macht es zu Testzwecken ja auch nichts aus, da ich die Seite sowieso ISO-8859-1 kodiert ausgebe.

          Nachdem ich alle Umlaute und Sonderzeichen ordentlich umgewandelt habe, wird die Seite auch richtig dargestellt.

          Wie kommt es eigentlich, das mein news-Dokument auf einmal UTF-8 kodiert ist? Ich exportiere mit dem XML::RSS doch nur die Text-Inhalte der heise-News in mein HTML-Dokument, und importiere nicht das gesamte XML-Format.

          Die XML-Parser für Perl transkodieren alles zu UTF-8. Ggf. willst du http://perl-xml.sourceforge.net/faq/#encodings lesen.

          Danke für den Link, werde mich mal genauer informieren! Aber eins ist mir trotz allem noch nicht klar:
          Ich füge mit dem Modul HTML::Template Variablen in eine HTML-Vorlage ein, die ISO-8859-1 kodiert ist (über Meta-Angaben).
          Über das Modul XML::RSS (basiert auf XML::Parser und expat) werden diese Variablen mit Informationen gefüllt.
          Mit dem CGI-Modul gebe ich einen Standard-Header aus...

          Woher bitte nimmt nun der Browser die Information, das er das übermittelte Dokument UTF-8 kodiert darstellen soll?

          Gruß
          Helmut Weber

          --
          -------------------------------------------
          Mode ist eine Variable, Stil eine Konstante
          1. Woher bitte nimmt nun der Browser die Information, das er das übermittelte Dokument UTF-8 kodiert darstellen soll?

            Wenn du es ihm nicht sagst rät er.