Jonas: Umlaute im RSS-Feed - wie kodieren?

Hallo

Ich habe ein kleines Problem mit einem RSS-Feed.
Ich habe die Umlaute nach html kodiert (ü etc.). Wenn ich den Feed nun durch einen Validator schicke, gibt er mir an der Stelle, wo das ü steht, eine Fehlermeldung aus.

http://www.feedvalidator.org/check.cgi?url=http%3A%2F%2Fwww.ps2zone.ch%2Frss%2Fnews.rss

(Dass das Datumsformat bei den items nicht stimmt, weiss ich :D habe auch erst gerade begonnen den RSS-Feed einzubauen )

Wäre um Hilfe sehr dankbar.

Jonas

  1. Hallo Jonas.

    Ich habe die Umlaute nach html kodiert (ü etc.).

    Und dann hoffentlich auch die dazu passenden Entities (oder wie auch immer sie wirklich heißen sollten) in der XML-Datei definiert?

    Wenn ich den Feed nun durch einen Validator schicke, gibt er mir an der Stelle, wo das ü steht, eine Fehlermeldung aus.

    Offenbar nicht.

    Eine XML-Datei hat Standardmäßig die Kodierung UTF-8, d. h. du kannst bedenkenlos nahezu jedes x-beliebige Zeichen direkt hineinschreiben.

    Gruß, Ashura

    --
    Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
    30 Days to becoming an Opera8 Lover -- Day 19: Notes
    Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
    [Deshalb frei! - Argumente pro freie Software]
  2. Hallo, Jonas

    Ich habe die Umlaute nach html kodiert (ü etc.). Wenn ich den Feed nun durch einen Validator schicke, gibt er mir an der Stelle, wo das ü steht, eine Fehlermeldung aus.

    Warum es nicht geht, hat Ashura schon versteckt gesagt: in x-beliebigen XML-Dateien gibt es nur ein paar vordefinierte benannte Entities. Die bei Dir vorhandenen Beispiele z.B. für Umlautkodierung sind zwar in HTML vordefiniert, aber eben nicht für jedes Feld-, Wald- und Wiesen-XML. Im Prinzip müsste man diese dann in der DTD selbst definieren, ich halte es aber nicht unbedingt für wahrscheinlich, dass jeder RSS verarbeitendes Ding damit zurecht kommt.

    Im Prinzip brauchst Du Deine auch Umlaute nicht in Entities zu kodieren. Du hast für Deinen RSS-Feed die Kodierung ISO 8859-1 angegeben, darin sind alle gebräuchlichen europäischen Schriftzeichen enthalten. Du kannst also Deine Umlaute einfach als normalen Text reinpacken. Ginge auch in der Kodierung UTF-8, wie von Ashura vorgeschlagen.

    Wenn das aber für Dich irgendwie ein Problem sein sollte, weil Du den Text aus einer Quelle bekommst und nicht verändern kannst, dann gibt es eine andere Lösung - Du musst den Text im description-Element maskieren. Das wird beispielsweise gemacht, um HTML-Quellcode im RSS-Feed unterzubringen zu können, klickbare Links, Bilder und so. Und Deine ü sind aus dieser Sicht nun mal XML. Für RSS 2.0 gibt es da verschiedene Möglichkeiten. Für die einfachste halte ich die, den HTML-Inhalt des Description-Elementes zusätzlich noch einen CDATA-Abschnitt zu packen. Das heisst dann für den XML-Parser, dass er den Inhalt des Abschnittes nicht als XML interpretieren sondern so weiterreichen soll. Das heisst, er stört sich nicht mehr an den ihm nicht bekannten Entities. Sieht dann so aus:

    <description>
    <![CDATA[
    Mit etwas Versp&auml;tung erreichte das Spiel doch noch unser Testlabor. Ob die Persiflage an die Science-Fiction Filme der 50-Jahre auch spielerisch &uuml;berzeugen kann?
    ]]>
    </description>

    Dieselbe Methode nutzen wir hier auch für die RSS-Feeds des Forums.

    Tim

    1. Hi

      Erstmal ein dickes Danke an euch beide!

      Ich werde in dem Fall den RSS-Feed zukünftig mit üäö usw. erstellen. Die Umformung der Meldungen, die in der Datenbank als html-formatierter Text liegen, zurück in den "klartext" ist in meinem Fall kein Problem.

      Gruss und Dank

      Jonas