GermanysNextTopfmodel: Mal wieder Problem mit Umlauten bei GET

nabend zusammen,
bion gerade dabei eine "Live-Suche" mit Ajax zu bauen.
Sprich mann gibt oben was ein, und unten listet er die Ergebnisse auf.
klappt auch wunderbar, allerdings gibt es Probleme mit den Umlauten.
Sobald mann etwas mit umlauten eingibt, findet er kein Ergebniss. lasse ich mir den Select per echo ausgeben, und in phpmyadmin eingebe, passt das Ergebnis. Rufe ich die Angesteuert Seite, also die ich mit Ajax aufrufe, alleine, mit GET-Parameter mit Umlaut auf, funktioniert es auch.

urlencode kann ich ja nciht verwenden, da die Daten ja erst im Formular eingegeben werden.

Irgendjemand einen rat

Danke Euch
gruß
GermanysNextTopfmodel

  1. hi,

    urlencode kann ich ja nciht verwenden, da die Daten ja erst im Formular eingegeben werden.
    Irgendjemand einen rat

    http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#encode_uri

    Würde ich jetzt nach einer kurzen Recherche raten.

    mfg

    --
    echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
    array(2) {
      ["SELFCODE"]=>
      string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
      ["Meaningful"]=>
      string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
    }
    1. Moin!

      http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#encode_uri

      Würde ich jetzt nach einer kurzen Recherche raten.

      Die Idee des Encodings ist gut, die Funktion aber die falsche. encodeURIComponent() ist richtig. Man will in GET-Parametern auch &-Zeichen codiert haben, sonst zerstört es einem den Parameterstring ja.

      - Sven Rautenberg

      1. Moin!

        »» http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#encode_uri
        »»
        »» Würde ich jetzt nach einer kurzen Recherche raten.

        Die Idee des Encodings ist gut, die Funktion aber die falsche. encodeURIComponent() ist richtig. Man will in GET-Parametern auch &-Zeichen codiert haben, sonst zerstört es einem den Parameterstring ja.

        So pauschal ist das nicht. Wenn die Parameter _einzeln_ mit encodeURI() kodiert werden, ist das auch ok, sofern nicht die Zeichen, die encodeURIComponent() außerdem noch verschlüsseln kann (& usw., siehe Link weiter oben) im Parameter selbst vorkommen.

        Einzeln macht z.B. Sinn, wenn im Parameterstring Funktionen eingebaut sind, siehe Beispiel (Link ganz unten). Das & als Parameterlistentrenner muss als &amp; umschrieben werden, sonst meckert der Validator.

        Hodde

        Beispiel dazu

        1. Nabend zusammen,
          musste leider den ganzen Tag arbeiten, deswegen melde ich mich erst so spät.

          Habe es jetzt mit encodeURI und encodeURIComponent probiert, aber es läuft immer noch nicht.

          dir url sieht danach so aus(per alert ausgegeben):
          id=*&company=%C3%A4&sname=*&gname=*&street=*&street_nr=*&zip=*&city=*&phone=*&mobil=*&fax=*&mail=*&hp=*
          (sternchen sind meine Platzhalter)

          und ein var_dump auf $_GET gibt das aus:
          array(13) { ["id"]=> string(1) "*" ["company"]=> string(2) "ä" ["sname"]=> string(1) "*" ["gname"]=> string(1) "*" ["street"]=> string(1) "*" ["street_nr"]=> string(1) "*" ["zip"]=> string(1) "*" ["city"]=> string(1) "*" ["phone"]=> string(1) "*" ["mobil"]=> string(1) "*" ["fax"]=> string(1) "*" ["mail"]=> string(1) "*" ["hp"]=> string(1) "*" }

          jetzt sieht das ja so aus als wenn er UTF-8 nehmen würde (wegen dem ä bei company).
          Die Seite ist aber iso und ich habe in der Datei, die ich per Ajax anspreche, extra nochmal nen content-header gesetzt, und er liefert Sie auch mit UTF-8 aus.

          Habe ich vielleciht irgendwas übersehen, oder irgendwas vergessen.

          Danke für Eure Aufopferung
          Gruß
          germanysNextTopfmodel

          1. hi,

            jetzt sieht das ja so aus als wenn er UTF-8 nehmen würde (wegen dem ä bei company).

            So ist es. encodeURI('ä') ergibt %C3%A4 und das ist utf-8.

            Die Seite ist aber iso [..]

            dann nimm escape('ä') und Du bekommst ein %E4 passend zu ISO.

            Zum Testen im Browser, Adresszeile: javascript:alert(escape('ä'))

            Hotte

            --
            Beispiel: ajaxRequest('/cgi-bin/cnt.cgi?count=' + escape(document.URL) + '&amp;ref=' + escape(document.referrer));
            1. Tausend Dank...
              klappt wunderbar.
              hatte mir den Link zu decodeURI zwar mehrmals durchgelesen, aber nirgendwo stand das das utf-8 ist.

              naja, es läuft ja jetzt.

              Wünsche ein schöne WE
              GermanysNextTopmodel