Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Umlaute und Sonderzeichen decodieren

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

  • [Erledigt] Umlaute und Sonderzeichen decodieren

    Moin.

    Folgende Sache. Und zwar lese ich eine XML aus und schreibe die Werte in eine Datenbank.
    Funktioniert soweit fast einwandfrei
    Und zwar gibt es in der XML zum einem umlaute und zum anderem Sonderzeichen, die so maskiert sind: "'"
    Jetzt folgende frage. Wenn ich die Inhalte auslese und dann in die DB schreiben will, kriege ich einen Error bei dem Apostroph. Ist die frage, ob ich das anders codieren kann. Irgendwie mit utf8_decode etc.
    Und die andere Sache ist auch noch, dass die Umlaute ziemlich schräg in der DB dargestellten werden. Beispiel: "Gesprächsführung" -> "Gesprächsführung".
    kann mir da jemand helfen?

    Hier noch der Code:
    PHP-Code:
    $doc = new DOMDocument();
            
    $doc->load("upload/".$newFileName);
                        
            
    $itemstitel1 $doc->getElementsByTagName("Semtitel1");
            for (
    $i 0$i $itemstitel1->length$i++)
            {
                
    $temptitel1 $itemstitel1->item($i)->nodeValue;
                
    mysql_query("INSERT INTO agw_temp (Semtitel1) VALUES ('$temptitel1')") or exit (mysql_error());
            } 
    Das ist außerdem nur ein kleiner auszug. ich sprech ca. 60 Elemente an. Dann ist die Query auch länger. Aber aufgebaut ist es so. Das sollte zur Verdeutlichung reichen.

    EDIT:
    Ich habe mir nochmals den Rat von David zu Herzen genommen, und mir seinen link genau angeguckt, den er gepostet hat, zu charset. Und siehe da, es geht.
    Zumindest mit den Umlauten. Die Sonderzeichen probiere ich auch noch gerade aus.
    Danke an David!!!
    Hier nochmal der link, falls jemand das selbe Problem haben sollte.
    charset-connection

    Also: Die umlaute kriege ich hin. Allerdings die Sonderzeichen nicht. Da kracht es. Weiß noch einer einen rat?
    sigpic


  • #2
    UTF-8 benutzen. Verfügt über einen größeren Zeichenraum.
    --
    ^^ O.O
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Danke für den tipp. Das mache ich aber auch schon.
      Bevor ich die query starte sage ich:
      PHP-Code:
      mysql_set_charset(utf8); 
      sigpic

      Kommentar


      • #4
        Und Dein Script und die DB sind auch in UTF-8? Wenn ja, welche Sonderzeichen gehen denn nicht?
        --
        ^^ O.O
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Also Db ist in UTF8. mein Script... Ehrlich gesagt, in was soll es denn sein? is doch egal.
          da ich die Werte aus der ausgelesenen XML in die DB schreibe.
          Und das steht sowas drin wie z.b.
          So ist's recht!
          Und sowas wie ' oder & das möchte ich in die datenbank schreiben. Allerdings natürlich dann nciht als code, sondern als Zeichen. Wie das Apostroph ` oder das UND-Zeichen &
          Vor allem kann ich es nciht in die Datenbank schreiben, weil er mir beim schreiben einen Error wirft.
          sigpic

          Kommentar


          • #6
            Ach Dir geht es um die Entities? Versuch doch mal html_entity_decode. Wenn Dein xml natürlich noch andere entities definiert, mußt Du dir ein search/replace schreiben.
            --
            ^^ O.O
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              ok ich werde es mal probieren. danke
              Also irgendwie klappt das noch nicht so ganz...
              Hab jetzt folgendes probiert:
              PHP-Code:
              $doc = new DOMDocument();
                                  
              $doc->load("upload/".$newFileName);
              $doc = new DOMDocument();
                                  
              $doc->load("upload/".$newFileName);
              for (
              $i 0$i $itemstitel2->length$i++)
                                  {
              $temptitel2 html_entity_decode($itemstitel2->item($i)->nodeValue);
              mysql_set_charset(utf8);
                                      
              mysql_query("INSERT INTO agw_temp
                                      (Semtitel2) VALUES('
              $temptitel2')") or exit (mysql_error());

              Fehler: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's recht!', 'Elektro-Hydraulik in Theorie und Praxis', '6065', '40', 'Mo. - Fr.',' at line 7

              Und das 's recht!' habe ich mal in der XML gesucht und es steht genau ' davor.
              Brauche also ncoh etwas Hilfe...
              sigpic

              Kommentar


              • #8
                mysql_real_escape_string() anwenden

                Kommentar


                • #9
                  Genau. Im Zweifel hat immer die Fehlermeldung recht.
                  --
                  ^^ O.O
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    Besten dank! Läuft xD
                    sigpic

                    Kommentar

                    Lädt...
                    X