Ankündigung

Einklappen
Keine Ankündigung bisher.

xml feed mit php Keine Umlaute

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • xml feed mit php Keine Umlaute

    Hallo,
    Auf der Seite
    Daily-Picks Bundesliga-Tippspiel News Feed
    werden statt Umlauten Sonderzeichen angezeigt, wie umgehe ich das?
    Ich denke mal, ich kann irgendwas im Header einstellen, nur was?

    Bisher:
    Code:
    <?
    header("content-type:application/rss+xml");
    include("../../files/dp_db_connexion.php"); 
    ?>
    
    <rss version="2.0">
    <channel>
        <title>Daily-Picks Bundesliga-Tippspiel News Feed</title>     
        <link>http://www.daily-picks.de/</link>
        <description>Tipps zur Fußball-Bundesliga</description>
        
    	<?
    	$query = "SELECT ID, Text, Artikelurl, Timestamp, Ueberschrift FROM news LIMIT 10";
    	$result = mysql_query($query)or die(mysql_error());
    	while($row = mysql_fetch_array($result))
    		{
    		echo "<item>
    		<title>".$row["Ueberschrift"]."</title>         
            <link>http://www.daily-picks.de/".$row["ID"]."_".$row["Artikelurl"].".html</link>
            <description>".substr($row["Text"],0,250)."(...)</description>
    		<pubDate>".date("d.m.Y. h:i",$row["Timestamp"])."</pubDate>
       		</item> ";
    		
    		}
    	
    	?>
    	
    	 
    </channel>
    </rss>


  • #2
    Schuss ins blaue:

    PHP: htmlentities - Manual

    Aber ich weiss nicht ob ein RSS Reader mit HTML Umlauten umgehen kann.
    twitter.com/moveax1 || http://modxcms.com/ || http://ubuntuusers.de/

    $live->free() OR die();

    Kommentar


    • #3
      Das sieht nach ISO-8859-1-Daten aus, die als UTF-8 behandelt werden.
      PHP-Code:
      header("Content-type:application/rss+xml; Charset=ISO-8859-1"); 
      sollte helfen.

      @moveaux1: in seinem Code kommt kein htmlentities() vor. Ein UTF-8-Mismatch bei htmlentities() ist auch auszuschließen, das sähe anders aus. Feedreader können mit den Zeichensätzen durchaus umgehen, nur mit Entities wie &auml; &ouml; oder &uuml; nicht, da diese in der RSS-DTD nicht definiert sind, dafür aber mit den numerischen Varianten. Bei einem passenden Content-Type kann man sich die Kodierung aber auch sparen.
      Aufgrund der nicht vorhandenen Entitäten wäre htmlentities() also lediglich eine Lösung, die zu einem Parser-Error führen würde. htmlspecialchars() sollte man aber dennoch anwenden, &lt;, &gt; und &amp; sind nämlich definiert.
      Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

      Kommentar


      • #4
        Zitat von Manko10 Beitrag anzeigen
        Das sieht nach ISO-8859-1-Daten aus, die als UTF-8 behandelt werden.
        PHP-Code:
        header("Content-type:application/rss+xml; Charset=ISO-8869-1"); 
        sollte helfen.

        @moveaux1: in seinem Code kommt kein htmlentities() vor. Ein UTF-8-Mismatch bei htmlentities() ist auch auszuschließen, das sähe anders aus. Feedreader können mit den Zeichensätzen durchaus umgehen, nur mit Entities wie &auml; &ouml; oder &uuml; nicht, da diese in der RSS-DTD nicht definiert sind, dafür aber mit den numerischen Varianten. Bei einem passenden Content-Type kann man sich die Kodierung aber auch sparen.
        Gut Gut, war wie gesagt der Schuss ins blaue
        Wieder was dazu gelernt.
        twitter.com/moveax1 || http://modxcms.com/ || http://ubuntuusers.de/

        $live->free() OR die();

        Kommentar


        • #5
          Habe noch einen Satz angefügt.

          Der Charset heißt übrigens ISO-8859-1. Da habe ich wohl die falsche Taste erwischt.
          Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

          Kommentar


          • #6
            danke, genau sowas hab ich gemeint.
            Was meinst Du mit
            htmlspecialchars() sollte man aber dennoch anwende
            genau?
            Die Ausgabe des Textes codieren?

            Kommentar


            • #7
              Nein, die HTML-Sonderzeichen <, >, " und & (und mit Option ENT_QUOTES auch ') maskieren.
              Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

              Kommentar


              • #8
                pubDate sollte übrigends keine deutsche Datums-Angabe sein sondern nach RFC 822 ( date(DATE_RFC822, $deinTimestamp); )

                da RSS im Endeffekt XML ist, sollte da eventuell noch ein
                Code:
                <?xml version="1.0" encoding="ISO-8859-1"?>
                mitrein.

                Standard-Encoding für XML ist nämlich UTF-8, ich weis ja nicht nach welchen Kriterien RSS-Reader üblicherweise das verwendete Charset ermitteln, ob die auch den HTTP-Header nehmen, oder das xml-encoding (fallback auf utf-8 ?) ... etc
                robo47.net - Blog, Codeschnipsel und mehr
                | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

                Kommentar


                • #9
                  Ich vermute, dass der vom Server gesendete Content-Type das letzte Wort hat.
                  Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                  Kommentar


                  • #10
                    Zitat von Manko10 Beitrag anzeigen
                    Nein, die HTML-Sonderzeichen <, >, " und & (und mit Option ENT_QUOTES auch ') maskieren.
                    Weil das nämlich auch die XML-Sonderzeichen sind, bzw. genau diejenigen Entitäten, die XML von sich aus bereitstellt

                    Kommentar


                    • #11
                      Ich weiß.
                      Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                      Kommentar


                      • #12
                        Zitat von Manko10 Beitrag anzeigen
                        Nein, die HTML-Sonderzeichen <, >, " und & (und mit Option ENT_QUOTES auch ') maskieren.

                        Zitat von David Beitrag anzeigen
                        Weil das nämlich auch die XML-Sonderzeichen sind, bzw. genau diejenigen Entitäten, die XML von sich aus bereitstellt
                        Und was heißt das jetzt speziell für meinen Fall?
                        alles mit vorangestelltem \ schreiben?!

                        Kommentar


                        • #13
                          So wie es Manko10 schon geschrieben hat: Den "richtigen" Zeichensatz angeben und htmlspecialchars() auf den Text anwenden.
                          Das bezieht sich dann(wenn ich es richtig überblicke) auf $row["Ueberschrift"] und substr($row["Text"],0,250)

                          Kommentar


                          • #14
                            Würde hier nicht auch CDATA helfen? CData muss er dann ja sowieso anwenden, weil ein & dann vorkommt, oder täusche ich da gerade?
                            Mfg Tomtaz
                            "Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."

                            Kommentar


                            • #15
                              Um & kümmerst sich schon htmlspecialchars()
                              &->&amp;

                              Kommentar

                              Lädt...
                              X