Probleme mit Zeichenkonvertierung

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

  • Probleme mit Zeichenkonvertierung

    Hallo, ich habe Probleme mit der Konvertierung von Zeichen. Mit wird von einer HTML-Datei übergeben:

    HTML-Code:
    ">Förderung durch „Andere Worte – neue Töne“<br /></a>
    Das kommt, wenn ich es auf meiner Seite darstelle so raus:

    HTML-Code:
    Förderung durch âAndere Worte â neue Töneâ -
    Was mich verwirrt, ist dass sowohl die Anführungszeichen unten und oben, als auch der Bindestrich als ASCII 226 bei mir ankommen. so dass ich mit str_replace nur alle drei in '"' verwandeln kann.

    Hat jemand eine Idee?

    Gruß
    newbie1955
    Zuletzt geändert von newbie1955; 02.08.2013, 15:30.

  • #2
    Welche Zeichenkodierung hat die Datei, von der du dir das holst?

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      utf8

      HTML-Code:
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      steht im head. Hatte auch schon mal mit utf8_decode herumgespielt,
      ergibt ja aber eigentlich keinen Sinn.

      Merkwürdig finde ich auch, dass auf meiner Seite alle drei Zeichen
      so ausgegeben werden wie schon zitiert, als ich aber meine Ausgabe
      hier vorhin als HTML-Zitat ausgeben wollte, erstmal das hier dastand:
      HTML-Code:
      „Andere Worte – neue Töne“
      und nicht wie auf meiner (utf8)-Seite
      HTML-Code:
      âAndere Worte â neue Töneâ -
      Zuletzt geändert von newbie1955; 02.08.2013, 15:50.

      Kommentar


      • #4
        Zitat von newbie1955 Beitrag anzeigen
        HTML-Code:
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        steht im head.
        Das ist erst mal völlig lattens. Da kann drin stehen was will. Wenn die Kodierung der Datei(!) anders ist, knallt es.
        Zitat von newbie1955 Beitrag anzeigen
        Merkwürdig finde ich auch, dass auf meiner Seite alle drei Zeichen
        so ausgegeben werden wie schon zitiert, als ich aber meine Ausgabe
        hier vorhin als HTML-Zitat ausgeben wollte, erstmal das hier dastand:
        HTML-Code:
        „Andere Worte – neue Töne“
        und nicht wie auf meiner (utf8)-Seite
        HTML-Code:
        âAndere Worte â neue Töneâ -
        Ich tippe da auf irgendeine Windows-Kodierung, die dir alles zerhaut. Ist die Datei, auf die du zugreifst, online verfügbar?

        Peter

        PS: Vielleicht hilft dir das hier unter Umständen weiter.
        Zuletzt geändert von Kropff; 02.08.2013, 19:20. Grund: Rechtschreibfehler
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Hier die Seite

          es handelt sich um diese Seite, die ich mit Erlaubnis des Verlags auslesen will.

          medium magazin - für journalisten - medien journalismus zeitung print magazin radio tv online


          Danke für den Link, ich werde mir das in Ruhe durchlesen. Ich finde Deine Seiten sehr gut aufgebaut, gerade für Leute, die das noch nicht so lange machen...

          Hier mein Code:
          PHP-Code:
          <?php
          $data 
          file_get_contents('http://www.mediummagazin.de/');
          $doc = new DOMDocument();

           
          $doc->loadHTML($data); 


          $xPath = new DOMXPath($doc);

          $zaehler 0;
          $strich " - ";

          foreach (
          $xPath->query('//div//div/div/div/a/following-sibling::p') as $node2) {


          if ((
          $zaehler <= 10) && ($node2->nodeValue != '') && ($node2->nodeValue != NULL)){

           
          /*    $title = utf8_encode($node2->nodeValue);  */
          $array[$zaehler] = $node2->nodeValue;

          $zaehler++;

          }
          }


          $zaehler 0;
          foreach (
          $xPath->query('//div//div/div/div/a') as $element
          {    
             
             
             
          $title utf8_decode($element->nodeValue);  
               
          $title str_replace('""','"',$element->nodeValue);    
                 
          $title str_replace('â','"',$title); 

          /*     $title = $element->getAttribute('title');*/
                  


             
          if (($zaehler <= 10) && ($title != ""))
             {
             
          $array[$zaehler]=utf8_decode($array[$zaehler]);
              echo 
          "<li><a href=\"".htmlspecialchars($hreftENT_QUOTES)."\" target=\"_blank\" title =\"".htmlspecialchars($array[$zaehler], ENT_QUOTES)."\">".htmlspecialchars($titleENT_QUOTES) . "</a></li>";
               
                    
                           
          $zaehler++;
              }  
          }


          ?>
          </ul>

          Kommentar


          • #6
            Hallo

            habe jetzt viel mit strtr, str_replace und preg_replace rumprobiert, aber anscheinend ist so direkt kein Zeichenersatz möglich, ich schlage mich immer noch mit diesem Ergebnis herum:

            HTML-Code:
            Neu am Kiosk
            Techniktipp: Datenjournalismus mit Datawrapper
            Förderung durch „Andere Worte – neue Töne“
            Techniktipp: Online-Fragebögen
            Machtfragen: 77 Journalistinnen zu ihren Karriereambitionen
            Techniktipp: Online-Recherche
            "��Absolut nachahmenswert"��: Zeitungsprojekte für Azubis
            Crash-Kurs in Sachen Audio-Slideshow
            Lob & Preis
            Wolfgang Blau: "��Für Dünkel ist bei uns kein Platz"��
            Techniktipp: So funktioniert Google Fusion
            und in dem Quelltext der ausgelesenen Seite steht:

            HTML-Code:
            class="title" style="line-height:1.2em;font-size:1.1em;font-weight:bold;">Förderung durch „Andere Worte – neue Töne“<br /></a>     <p style="line-height:1.2em;margin-top:0px;">
            
            
                    <a href="http://www.mediummagazin.de/magazin-plus/absolut-nachahmenswert-zeitungprojekte-fur-azubis/" rel="bookmark" class="title" 
            style="line-height:1.2em;font-size:1.1em;font-weight:bold;">
            “Absolut nachahmenswert”: Zeitungsprojekte für Azubis<br /></a>
            
                    <a href="http://www.mediummagazin.de/magazin-plus/wolfgang-blau-fur-dunkel-ist-bei-uns-kein-platz/" rel="bookmark" class="title" style="line-height:1.2em;font-size:1.1em;font-weight:bold;">
            Wolfgang Blau: “Für Dünkel ist bei uns kein Platz”<br /></a>
            Noch jemand eine Idee

            Kommentar


            • #7
              Hau erstmal das ganze utf8_decode()-Zeug weg. Setze im HTTP-Header den korrekten Zeichensatz (UTF-8) und gib auch bei htmlspecialchars() UTF-8 als 3. Parameter an.

              Kommentar


              • #8
                Hallo,

                im Header stand schon:

                PHP-Code:
                header("Content-Type: text/html; charset=UTF-8"); 
                Das UTF8 im htmlspecialchars() hat nix geändert. Aber mir ist was anderes aufgefallen, was mir ein wenig peinlich ist. Ich habe die meisten meiner Seiten immer direkt im webfilemanager meines Providers geschrieben und geändert usw. und erst in der neuesten Version wird angezeigt, in welchem Code die Seite abgespeichert wurde, nämlich iso-8859-1 und nicht, wie erwartet in utf8. Nun funktionieren alle meine Seiten auch so, aber wie hängt das zusammen? Ich habe dieses Auslesen auch mal in einer uft8ohneBOM-Version gemacht auf einer Testseite und ein besseres Ergebnis bekommen, wenn auch nicht alle Zeichen korrekt kamen. Sondern so (siehe dritte Zeile):

                HTML-Code:
                Neu am Kiosk
                Techniktipp: Datenjournalismus mit Datawrapper
                Förderung durch „Andere Worte – neue Töne“
                Techniktipp: Online-Fragebögen
                Machtfragen: 77 Journalistinnen zu ihren Karriereambitionen
                Techniktipp: Online-Recherche
                “Absolut nachahmenswert”: Zeitungsprojekte für AzubisCrash-Kurs in Sachen Audio-Slideshow
                Lob & Preis
                Wolfgang Blau: “Für Dünkel ist bei uns kein Platz”
                Techniktipp: So funktioniert Google Fusion
                Wenn ich dagegen meine oben zitierte iso....-Seite in mein notepad++ lade und als utf8 ohne BOM abspeichere und wieder hochlade, ändert das kurioserweise nix....?

                Gruß und Dank newbie1955
                Zuletzt geändert von newbie1955; 04.08.2013, 17:27.

                Kommentar


                • #9
                  Hat

                  ...noch jemand eine Antwort auf die utf8-Frage?

                  Kommentar


                  • #10
                    Zitat von newbie1955 Beitrag anzeigen
                    ...noch jemand eine Antwort auf die utf8-Frage?
                    Welche Frage?

                    Stell alles auf UTF-8 um.
                    Fertig.

                    Nur konvertieren, wenn du deine Quellen andere Zeichencodierungen verwenden.
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      Leider ist es mit utf8-Abspeichern allein doch nicht getan. Also, ich habe im header utf8 festgelegt, die Seite in utf8 abgespeichert und hinter htmlspecialchars auch noch mal utf8 angegeben, aber dennoch kommen viele Zeichen falsch raus, z. B. so
                      HTML-Code:
                      MEDIEN Neu am KioskDrei  neue Titel im Zeitschriftenregal: Bei "Hotel Design", der  generalüberholten "Allgemeinen Hotel- und Gaststättenzeitung" und der  "Ärzte Zeitung" werden freie ...Techniktipp: Datenjournalismus mit DatawrapperDrei  Jahre nach der Gründung des Guardian Data Stores ist Datenjournalismus  keine Spielerei der Online-Avantgarde mehr. Das liegt einerseits daran,  ...Förderung durch "€žAndere Worte "€“ neue Töne"€œ  Der Journalistinnenbund fördert seit 2002 mit dem Nachwuchspreis  "Andere Worte - neue Töne"  junge Kolleginnen. Der Preis wird zum  zehnjährigen ...Techniktipp: Online-FragebögenOnline-Fragebögen  sind die beste Möglichkeit die Meinung vieler Nutzer einzuholen.  Wissenschaftler nutzen sie für ihre Erhebungen, im Journalismus, werden  Fragebögen ...Machtfragen: 77 Journalistinnen zu ihren KarriereambitionenFür unsere Jahresedition "JOURNALISTIN 2012" haben 77 Kolleginnen auf drei Fragen geantwortet:   	Warum brauchen wir mehr Journalistinnen in Chefpositionen? 	Hätten Sie persönlich ...Techniktipp: Online-RechercheGoogle  ist so praktisch: Ob Fragen zur Rechtschreibung, Informationen über  Politiker oder Nachrichten – zwei Stichwörter ins Suchfeld gehackt  und in vielen Fällen ist die Frage ...

                      Hier mein Script:

                      PHP-Code:
                        <div class="border">

                          
                         <a href="http://www.mediummagazin.de/" target='_blank'> 
                      <img src="logos/medmag.jpg" alt="Mediummagazin" style=" margin:3px 0px 0px -45px ; padding:0px;"/></a>
                      <br>MEDIEN
                      <ul>

                      <?php
                      $data 
                      file_get_contents('http://www.mediummagazin.de/');
                      $doc = new DOMDocument();

                       
                      $doc->loadHTML($data); 


                      $xPath = new DOMXPath($doc);

                      $zaehler 0;

                      foreach (
                      $xPath->query('//div//div/div/div/a/following-sibling::p') as $node2) {


                      if ((
                      $zaehler <= 10) && ($node2->nodeValue != '') && ($node2->nodeValue != NULL)){

                      $array[$zaehler] = $node2->nodeValue;

                      $zaehler++;

                      }
                      }


                      $zaehler 0;
                      foreach (
                      $xPath->query('//div//div/div/div/a') as $element
                      {    
                         
                         
                      $hreft $element->getAttribute('href');
                        
                        
                      $title str_replace('""','"',$element->nodeValue);    

                        
                      $title str_replace('â','"',$title); 
                        
                       
                      $title strtr($title"&#8220""");

                      $title preg_replace("/<.+?>/is"""$title);

                         if ((
                      $zaehler <= 10) && ($title != ""))
                         {
                          echo 
                      "<li><a href=\"".htmlspecialchars($hreftENT_QUOTESUTF8)."\" target=\"_blank\" title =\"".htmlspecialchars($array[$zaehler], ENT_QUOTESUTF8)."\">".htmlspecialchars($titleENT_QUOTESUTF8) . "</a></li>";
                           
                                       
                      $zaehler++;
                          }  
                      }


                      ?>
                      </ul> 

                        
                          </div>
                      Also, nochmal meine Frage: Hat jemand eine Idee, was ich falsch gemacht haben könnte.

                      Gruß
                      newbie1955

                      Kommentar


                      • #12
                        Ergänzung

                        Kann mir jemand sagen, warum im Unterforum "HTML usw" immer nur ca. drei Themen angezeigt werden? Und z.B. dieses Thema hier nur kommt, wenn etwas neues geschrieben wird oder per SUCHE?

                        Kommentar


                        • #13
                          Zitat von newbie1955 Beitrag anzeigen
                          Also, nochmal meine Frage: Hat jemand eine Idee, was ich falsch gemacht haben könnte.
                          Die Seite, die du ausliest, enthält bereits korrekt UTF-8-kodierte Zeichen.

                          Wenn also deine Seite auch korrekt UTF-8 wäre (/ist), dann müsstest du diese Daten gar nicht mehr bearbeiten/umkodieren (von htmlspecialchars mal abgesehen), und es müsste alles funktionieren.

                          Also bleiben eigentlich nur zwei Möglichkeiten:
                          1. Deine Seite ist nicht korrektes UTF-8, oder
                          2. die Daten werden beim/nach dem Einlesen noch von irgendeinem anderen Mechanismus umkodiert (mbstring käme evtl. in Frage).


                          Kann mir jemand sagen, warum im Unterforum "HTML usw" immer nur ca. drei Themen angezeigt werden?
                          Weil alle weiteren Themen dort schon älter sind.
                          Wie weit aus der Vergangenheit du Themen angezeigt bekommen willst, kannst du in den Nutzereinstellungen festlegen („Anzeige von Themen“ -> „Maximales Alter angezeigter Themen“)
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Danke für die schnelle Antwort. Worin könnten denn MEINE utf8-Fehler noch bestehen? Hier ist mein Header:

                            PHP-Code:
                            <?php
                            ini_set
                            ("user_agent""Mozilla/5.0 (compatible; Feedreader/PHP +".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"].")");
                            header("Content-Type: text/html; charset=UTF-8");
                            error_reporting(E_ALL);
                            $feedfu "feedfunktionen.php";           // Seite mit den Funktionen
                            ?>

                            <!DOCTYPE html>
                            <!--[if lt IE 7 ]><html lang="de" class="no-js ie6" xmlns="http://www.w3.org/2000/xhtml"><![endif]-->
                            <!--[if IE 7 ]><html lang="de" class="no-js ie7" xmlns="http://www.w3.org/2000/xhtml"><![endif]-->
                            <!--[if IE 8 ]><html lang="de" class="no-js ie8" xmlns="http://www.w3.org/2000/xhtml"><![endif]-->
                            <!--[if IE 9 ]><html lang="de" class="no-js ie9" xmlns="http://www.w3.org/2000/xhtml"><![endif]-->
                            <!--[if (gt IE 9)|!(IE)]><!--><html lang="de" class="no-js" xmlns="http://www.w3.org/1999/xhtml"><!--<![endif]-->
                            <head> 
                             
                                <title>Testseite Medien</title> 
                              <!-- Mimic Internet Explorer 9 -->
                             <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
                            <meta name="description" content="testtesttesttest" />
                            <meta http-equiv="refresh" content="600; URL=http://dummyseite.de/medien.php">  
                            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


                            <meta name="content-language" content="de" />
                            <meta name="language" content="deutsch, de" />
                            <meta name="google-site-verification" content="Toh0Q7KIIj4HcqnVWLHTIHRz7n5QZwj2uOp8idXQxNw" />
                                <link href="navi1.css" type="text/css" rel="stylesheet" media="screen" /> 
                                <link href="print1.css" type="text/css" rel="stylesheet" media="print" />
                                      <link rel="shortcut icon" href="http://www.testseitemedien.de/favicon.ico" />

                            Die Seite ist natürlich noch länger, es werden noch diverse feeds verarbeitet, aber würde denn irgendein Fehler in einem Teil der Seite zu Problemen in diesem div führen? mbstring kommt nicht vor in meinem Script.
                            Zuletzt geändert von newbie1955; 07.08.2013, 17:34.

                            Kommentar


                            • #15
                              Hat

                              noch jemand eine Antwort?

                              Kommentar

                              Lädt...
                              X