OldBear: US-ASCII statt ISO-8859-1 (Validator)

Hallo Gemeinde,

Biete einen RSS-NewsFeed 1.0 für ein Orchester an.

Über ein Admin-Tool werden mittels Perl in die XML-Datei
Nachrichten eingetragen. Das klappt alles soweit ganz gut.
Also das Perl baut schliesslich die Datei über eine
Vorlage auf und dann halt Ersetzungen für die
Platzhalter: $_ =~ s/:::ITEMS:::/$items/g;

Verwende: <?xml version="1.0" encoding="ISO-8859-1"?>

Der Validator (http://validator.w3.org/feed) meint zwar,
mein RSS wäre valide, aber ich erhalte folgende Warnung:

Your feed appears to be encoded as "ISO-8859-1", but your server is reporting "US-ASCII"

Mittels Google habe ich entdeckt, man kann z.B. in PHP den
Header Content-type: text/xml; charset=iso-8859-1 mitgeben...(?)

Aber wie sieht das in Perl aus? Etwa ein Schreiben in die
Datei mittels:
print f "Content-type: text/xml; charset=iso-8859-1\n\n"; ?
(Wobei f das Dateihandle für die XML-Datei ist)
funktioniert natürlich nicht. Dann steht das im Klartext
in der XML-Datei und ist dem Validator natürlich fremd.

Für ein kleinen Hinweis wäre ich dankbar, Ich möchte nicht
gerade deswegen auf UTF-8 umsteigen und die ganzen
Umlaute in HML-Code maskieren. Aber wäre dies die einzige Lösung?

Gruesse und Danke im vorraus!

  1. Hi,

    Mittels Google habe ich entdeckt, man kann z.B. in PHP den
    Header Content-type: text/xml; charset=iso-8859-1 mitgeben...(?)

    Aber wie sieht das in Perl aus? Etwa ein Schreiben in die
    Datei mittels:
    print f "Content-type: text/xml; charset=iso-8859-1\n\n"; ?
    (Wobei f das Dateihandle für die XML-Datei ist)
    funktioniert natürlich nicht. Dann steht das im Klartext
    in der XML-Datei und ist dem Validator natürlich fremd.

    sorge dafür, dass die Content-Type-Zeile HTTP-konform vor der Ausgabe jeglichen Inhalts erfolgt. Die HTTP 1.1-Spezifikation äußert sich dazu eindeutig:

    „[...] Both types of message consist of a start-line, zero or more header fields (also known as "headers"), an empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields, and possibly a message-body.“

    Auf Deutsch: Zuerst kommen die Header (also z.B. auch der Content-Type) gefolgt von einer Leerzeile und dann fängt der Inhalt an. Also nicht print f "Content-Type: ...", sondern genau umgekehrt.

    Viele Grüße
     Benjamin

    --
    Der nächste Satz ist gelogen.
    Der vorherige Satz ist wahr.