Umlaute in MySQL

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

  • #31
    Nun, encode() ersetzt ja öäü's mit irgendwie %FD oder so. Diese werden dann so in die Datenbank gespeichert.
    Autsch!

    Kommentar


    • #32
      Original geschrieben von TobiaZ
      Autsch!
      Wenn ich den String mit urldecode bearbeite, bevor er in die DB kommt, hab ich wieder den gleichen fehler.
      Bücher für Programmierer

      Kommentar


      • #33
        Original geschrieben von andygyr
        Nun, encode() ersetzt ja öäü's mit irgendwie %FD oder so. Diese werden dann so in die Datenbank gespeichert. Damit diese &FD's nicht als Text angezeigt werden, und als alternative zu unencode() hab ich urldecode() verwendet.
        urldecode() wird automatisch von PHP gemacht. Offenbar hast du es doppelt url encoded.

        Original geschrieben von andygyr
        Wenn ich es aber dabei lasse, werden Vierecke angezeigt, da die öüä's direkt so ins HTML eingetragen werden. Mit htmlentities() werden diese als &Uu.ml; (ohne .) eingetragen.
        Dann stimmt der eingestellte Zeichensatz nicht!

        Anstatt dass du endlich mal sauber mit einem Zeichensatz programmierst, konvertierst du ständig mit irgendwelchen Funktionen hin und her und wunderst dich dann, dass Probleme auftreten. Es wird wahrscheinlich nicht lange dauern, bis du wieder ein Problem damit haben wirst, weil du immer nur den Symptomen hinterherläufst, aber nicht die Ursache suchst.

        Wenn alles passen würde, wäre weder htmlentities noch urldecode notwendig. Das zeigt nur, dass Grundlegend bei deinem Programm ertwas nicht stimmt. Und du versuchst ständig das Problem unter den Teppich zu kehren, aber der Dreck kommt immer wieder hervor gekrochen.
        Zuletzt geändert von h3ll; 26.04.2009, 12:04.

        Kommentar


        • #34
          Ok.

          Wenn ich htmlentities und urldecode wegnehme bekomme ich ca. %E4%E4%E4%E4%E4%E4%E4%E4%E4%E4%E4%E4%E4%FC%FC%FC%FC%FC%FC%FC%FC%F6%F6%F6%F6%F6%F6%F6%F6%F6%F6

          Hier nochmal mal meine Einstellungen:
          Zeichensatzt der Tabelle: latin1
          Sortierung: latin1_swedish_ci
          SET NAMES latin1;
          Meta: content="text/html; charset=ISO-8859-1"
          Eintragung: htmlentities($text)
          Eintragung: Der Text wird mit der js Funktion encode() per GET parameter an eine PHP Datei geschickt welche den Text einträgt. Bei der Ausgabe gebe ich direkt den Text aus, ohne irgendwelche Funktion drum herum.

          Mich nimmt nur wunder ob wirklich ein zecihensatzt aus %E4%E4%E4%E4%E4%E4%E4 umlaute machen kann!

          Auch im JS kann ich kein zweifache encode() Finden:
          Code:
          function setComment(str)
          { 
          xmlHttp=GetXmlHttpObject();
          if (xmlHttp==null)
           {
           alert ("Browser does not support HTTP Request");
           return;
           }
          var url="tools/ajax/set_comment.php";
          url=url+"?text="+str;
          url=url+"&watch="+$_GET['watch'];
          //url=url+"&sid="+Math.random();
          xmlHttp.onreadystatechange=stateChanged2;
          xmlHttp.open("GET",url,true);
          xmlHttp.send(null);
          return false;
          }
          
          --------------
          
          form onsubmit="return setComment(escape(this.comment.value));">
                                  	<textarea name="comment" rows="3" cols="40"></textarea><br />
                                      <input type="submit" value="Absenden" />
                                  </form>
          Zuletzt geändert von andygyr; 26.04.2009, 13:03.
          Bücher für Programmierer

          Kommentar


          • #35
            Wir kennen deinen Code nur sehr oberflächlich.

            DU müsstest ihn mal stück für Stück durchgehen von der ersten Eingabe aus... Und immer schön prüfen ob die übertragenen Daten noch die sind, die du erwartest.

            Kommentar


            • #36
              Hab den obigen Beitrag editiert..
              Bücher für Programmierer

              Kommentar


              • #37
                Original geschrieben von andygyr
                Mich nimmt nur wunder ob wirklich ein zecihensatzt aus %E4%E4%E4%E4%E4%E4%E4 umlaute machen kann!
                Du solltest erst gar keine %E4, usw. bekommen! Da fängt schon mal das Problem an. Wenn du das jetzt konvertierst, hast du zwar ein Symptom bekämpft, aber du weißt immer noch nicht, warum es überhaupt dazu kommt.

                Also irgendwo encodierst du einmal zuviel, und das gehört weg.

                Kommentar

                Lädt...
                X