US-ASCII statt ISO-8859-1 (Validator)
OldBear
- xml
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!
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