Problem mit Sonderzeichen und Umlaute (auch in DB)

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

  • Problem mit Sonderzeichen und Umlaute (auch in DB)

    Also, man gibt per Formular, welches in utf-8 ausgegeben wird einen String ein.
    Testweise ist die Eingabe immer falsch, ziel ist die Eingabe wieder richtig auszugeben.
    Ich gebe also als erstes "Agbar" , mit den Anführungszeichen, wie erwartet wird bei der Neuausgabe nur ein / angezeigt, weil das " escaped wurde.
    Das Problem wurde gelöst, in dem ich htmlentities() über die Ausgabe fahren lasse, beim Neuausgeben steht wieder korrekt "Agbar", das Problem ist gelöst, aber es geht weiter, gebe ich nun Fjörd ein und gebe es aus, wird das ö durch htmlentities völlig zerstört, es steht dann sowas wie Fjörd" da, ergo Umlaute und §,$,ß werden dadurch unlesbar, Wie kann ich das Problem lösen? Relevant ist es, dass es in die Datenbank schreiben will, welche im momet Problemlos unkonvertierte " und Umlaute annimmt, die " werden durch \" ersetzt, die Umlaute bleiben drin, jedoch habe ich ein weiteres Problem mit den \" in der DB, unter bestimmten Vorraussetzungen muss ich eine Kategorie umbennen, sie wird dann neu einsortiert, ist nicht vermeidbar, nun gibt es ein Problem,
    im Prozess wird intern der neue mit altem Namen verglichen, es wird verstgestellt, wohin der Name verschoben wird.
    Beispiel "Meer" wird umbennant in "Zoo", ich gucke also ob Zoo größer als Meer ist, ist es, alles klar(Script weiß was zu tun ist), ergibt Meer<Zoo false weil man vielleicht anstatt "Zoo" "Badesee" eingegeben hat, prüft man ob Meer>Badesee ist, ergibt das true, weiß das Script, was es tut, ergibt das false, so weiß man, der neue und der alte Name und der neue Name auf der gleichen Position verbleiben, es funktioniert auch so, aber das Problem mit "Agbar" (also mit ") ist dass aus irgend einem unempfindlichen Grunde "Agbar"> "Agbar" false ist, jedoch "Agbar"<"Agbar" true ergibt und mein Script geht von der falschen Annahme aus, dass der selbe String kleiner als er selbst ist.
    (Das ist ein Szenario wo ich die Kategorie nicht umbennen, nur andere Felder)

    Wie kriegt denn dieses Forum es hin, dass man nach Umlauten suchen kann und alles andere richtig ausgegeben wird, denn ich will meine DB nicht voller urlde und encodes vollgestopft haben.

    Man kann davon ausegehen, dass ich gesucht habe, also bitte kein verweis auf Suchfunktion, damit hab ich die letzten Stunden verbracht.
    SQL Injection kitteh is...

  • #2
    das mit dem suchen bzw. vergleichen habe ich gar nicht verstanden.
    das erste problem lässt sich evtl. durch explizite kodierungsangabe lösen:
    PHP-Code:
    $text htmlentities($textENT_QUOTES'UTF-8'); 

    Kommentar


    • #3
      Danke, das erste Problem wurde gelöst, für das zweite empfehle ich, wer lust hat, folgendes:


      Code:
      CREATE TABLE `test` (
        `t` tinytext NOT NULL
      ) TYPE=MyISAM;
      
      -- 
      -- Daten für Tabelle `test`
      -- 
      
      INSERT INTO `test` VALUES ('\\"Abar"\\');
      und führe mal das aus
      Code:
      SELECT * FROM `test` WHERE t>'\"Abar\"'
      Warum wird hier ein Ergebnis ausgegeben, obwohl t nicht < \"Abar\" ist

      Oder sollte man stripslashes ausführen und in die DB keine escapte Anführungszeichen reinschreiben?
      SQL Injection kitteh is...

      Kommentar

      Lädt...
      X