Sonderzeichen-Probleme

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

  • Sonderzeichen-Probleme

    Hallo, ich lese auf meiner Seite einige rss-feeds mit dem magpie-parser ein. Bisher ohne Probleme. Zu Beginn der Funktion "feedholen" definiere ich:
    PHP-Code:
    define('MAGPIE_INPUT_ENCODING''UTF-8');
    define('MAGPIE_OUTPUT_ENCODING''UTF-8'); 
    Und das klappt auch, nur jetzt habe ich einen rssfeed hinzugefügt, der utf-8 als charset festlegt und hier kommen mir alle Sonderzeichen kryptisch zerschossen auf meiner Seite raus. Hat jemand eine Idee?

    Gruß
    newbie 1955

  • #2
    Hallo,

    Zitat von newbie1955 Beitrag anzeigen
    jetzt habe ich einen rssfeed hinzugefügt, der utf-8 als charset festlegt und hier kommen mir alle Sonderzeichen kryptisch zerschossen auf meiner Seite raus. Hat jemand eine Idee?
    Da gibt es viele Möglichkeiten, einige davon betreffen dich, aber es kann auch sein, dass der Feed auf den du zugreifen willst selbst schon fehlerhaft ist. Bitte gib mal genauere Infos, wie die Sonderzeichen zerschossen werden und wie der Originalfeed aussieht.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Zitat von AmicaNoctis Beitrag anzeigen
      Hallo,



      Da gibt es viele Möglichkeiten, einige davon betreffen dich, aber es kann auch sein, dass der Feed auf den du zugreifen willst selbst schon fehlerhaft ist. Bitte gib mal genauere Infos, wie die Sonderzeichen zerschossen werden und wie der Originalfeed aussieht.

      Gruß,

      Amica
      Hallo, Amica, Danke schon mal für die Antwort. Hier mein charset metatag und mein PHP:
      HTML-Code:
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
      PHP-Code:
      <?php
      function feedholen ($url)

      define('MAGPIE_INPUT_ENCODING''UTF-8');
      define('MAGPIE_OUTPUT_ENCODING''UTF-8');
      define('MAGPIE_CACHE_ON'false);
      define('MAGPIE_CACHE_AGE'0);
      require_once(
      'rss_fetch.inc');
      $zaehl 0;
      $alttitle "";

      if ( 
      $url ) {
      $num_items 13;
      $rss fetch_rss$url );
      $items array_slice($rss->items0,$num_items);
      }

      echo 
      "<ul id='feed'>";
      foreach (
      $items as $item) {
      $href $item['link'];
      $title $item['title'];
      $desc $item['description']; 

      $title trim($title);
      if ((
      $title !== '') && ($title !== NULL)&& ($title !== $alttitle)) {
      echo 
      "<li><a href=$href target='_blank'>$title</a></li>";
      $alttitle $title;
      $zaehl++;
      }
      }
      if (
      $zaehl == 0) {
      echo 
      $url;
      echo 
      " ist leider nicht erreichbar";}
      else
      echo 
      "</ul>";
      }
      ?>

      <div class="border">

          
         <a href="http://www.cnonline.de/" target='_blank'> 
      <img src="logos/cuxh.jpg" alt="Cuxhavener Nachrichten" width="135" height="28" style=" margin:3px 0px 0px -45px ; padding:0px;"/></a>

      <?php

      feedholen 
      ('http://www.cn-online.de/?type=221');

      ?> 
           

          </div>
      Hier der feed der einzulesenden Seite:
      CN-online: Nachrichten fur Cuxhaven

      Und so sieht er bei mir aus:
      Echte Camper frieren nicht
      Schnäpschen auf halber Strecke
      Mini-Flitzer gehen auf die Piste
      Günstige Arztbesuche, teure Hunde
      Böller und Raketen ab sofort zu haben
      Als Sternsinger durch die Ferien
      Budenzauber in Lamstedt
      Drogenring aufgeflogen
      22-Jährige schwer verletzt
      83-Jähriger schleudert gegen Baum
      Zehn Leser beim Rothenbaum
      Rot-Weiss steigt auf
      Ehemalige trafen sich Heiligabend
      ich habe noch zahlreiche andere feeds, aber die kommen alle ordentlich an.

      Gruß newbie1955

      Kommentar


      • #4
        Der Feed liegt als Latin-1 vor, du gibst jedoch als MAGPIE_INPUT_ENCODING UTF-8 an, was offensichtlich nicht zusammen passt. Versuch doch mal, das MAGPIE_INPUT_ENCODING gar nicht anzugeben und dafür MAGPIE_DETECT_ENCODING auf true zu setzen.

        Übrigens hat das Encoding welches du im Meta-Tag angibst nur bedingt Wirkung. Viel wichtiger ist das HTTP-Header-Field Content-Type und die Zeichencodierung, die dort als charset-Parameter angegeben ist. Wenn dein Server also im Header
        Code:
        Content-Type: text/plain; charset=iso-8859-1
        schickt, kannst du in deinem Meta-Tag alles mögliche drin stehen haben, es wird ignoriert, da dem HTTP-Header eine höhere Aussagekraft zugeschrieben wird. (Eigentlich ist es noch viel verwirrender: When specifications collide und dann kommt noch dazu, dass verschiedene Browser verschieden damit umgehen).

        Lass also am besten das blöde meta-Element weg und benutze stattdessen die header()-Funktion, um den Content-Type und dessen charset zu setzen.

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Ach noch etwas, was sogar auf der Magpie-Seite verlinkt ist: PHP, XML, and Character Encodings: a tale of sadness, rage, and (data-)loss Steve Minutillo :: messy-78

          Du bist nicht allein
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Danke

            erstmal für die Nachrichten! Da werde ich mich wohl mal wieder ein bisschen eingraben müssen.

            Aber selbst wenn ich bei MAGPIE_INPUT_ENCODING "iso-8859-1" eingebe statt utf-8, ändert das nichts. Wenn ich Deiner Empfehlung folge und die Input und Output-Encoding - Angabe weglasse, dass kommt es bei dem entsprechenden feed richtig, aber bei allen anderen kommen falsche Sonderzeichen. Wenn ich nur für diesen feed das encoding weglasse, hat er sich das UTF-8 von den anderen vorher offenbar gemerkt und registriert nicht, dass ich es beim letzten (cn-online.de) weglasse. Gibt es so etwas wie ein Aufheben des vorherigen Encodings in magpie?

            Insgesamt kenne ich mich halt in Magpie bisher auch nur soweit aus, wie ich es bisher gebraucht habe. ANgeblich soll ja simple pie sowieso besser sein, aber jetzt wieder umsteigen?

            Gruß
            newbie1955

            Kommentar


            • #7
              Utf-8_decode

              ..hat es auch gebracht und war am einfachsten. Danke für die Mühe.

              Gruß
              newbie1955

              Kommentar

              Lädt...
              X