Rainer Honsch: Kann man mit JavaScript Zeichen einer URL konvertieren?

Hallo!

Ich möchte folgendes machen:
Ich habe ein Variable, .. die z.B. folgendes enthält:
http://www.test.de/cgi-bin/test.cgi?Hallo=TestTest2 / 5

Nun müssen die Teile hinter dem ? Ja aber konvertiert werden, damit man diese URL an den Browser übergeben kann.

" " z.B. in %20 und / in %XYZ usw. geht das?

Rainer

  1. Hi,

    " " z.B. in %20 und / in %XYZ usw. geht das?

    hm, sind escape() und unescape() in <../../tecm.htm> wirklich sooo schwer zu finden?

    Cheatah

    1. hi
      ich dachte mit escape werden nur Steuerzeichen mit den ASCII-Werten 0 bis 31 umgewandelt...
      in einer solchen url sollten aber erstmal das " " in "+" und dann noch das "+" selber, "=", "&", "%" und alles von ASCII-Wert 127 bis 255 in die jeweiligen hexadezimalen umgewandelt werden - escape ist da wohl kaum das richtige dafür...
      ausserdem kann man das auch nicht an der kompletten url (zb "http://localhost/?a=b&c=d") machen, sondern immer an name ("a" + "c") und wert ("b" + "d") einzeln, da ja sonst die = und & zeichen auch wiederum umgewandelt werden und das geht dann ja auch nicht...
      cu

      1. Hallo isotoxin,

        ich dachte mit escape werden nur Steuerzeichen mit den ASCII-Werten 0 bis 31 umgewandelt...

        Das steht so auch in Selfhtml, ist aber wohl etwas didaktisch reduziert.

        Im Zweifel hilft die Netscape Doku weiter:
          http://developer.netscape.com/docs/manuals/js/client/jsref/contents.htm
        und die sagt, dass URL-encoded wird.

        [...] escape ist da wohl kaum das richtige dafür...

        doch doch, genau dafür ist es da.

        ausserdem kann man das auch nicht an der kompletten url (zb
        "http://localhost/?a=b&c=d") machen, sondern immer an name
        ("a" + "c") und wert ("b" + "d")
        einzeln, da ja sonst die = und & zeichen auch wiederum umgewandelt werden und
        das geht dann ja auch nicht...

        Das stimmt natürlich.
        Und sieht dann, wenn du a und b per URL übergeben möchtest so aus:

        query_url="http://localhost/script.php3?a=" + escape(a) + "&b=" + escape(b);

        Gruss,
        Carsten

        1. hi

          danke dass du mich drauf aufmerksam machst, dann brauche ich nicht selber ne extra funktion schreiben die das übernimmt was ich demnächst vor hatte :)
          da frage ich mich ma was jetzt richtig ist?

          also bei escape steht in selfhtml:

          Wandelt Steuersequenzen (Steuerzeichen mit den ASCII-Werten 0 bis 31) in ihre ASCII-Zahlenwerte um, und zwar in hexadezimaler Form. Setzt vor jeden Wert das Trennzeichen "%" und gibt die so erzeugte Zeichenkette zurück. Bei anderen Zeichen als Steuerzeichen gibt escape() die Zeichen unverändert zurück. Es handelt sich also um eine Funktion, die Steuerzeichen aus Werten entfernt und in Zeichenfolgen übersetzt.

          und bei dem url zeugs steht in selfhtml folgendes:

          Leerzeichen in den eingegebenen Daten (z.B. bei mehreren Wörtern) werden durch ein Pluszeichen + ersetzt.
          Alle Zeichen mit den ASCII-Werten 128 bis 255 (hexadezimal 80 bis FF) werden durch eine Hexadezimalzeichenfolge umschrieben, eingeleitet durch ein Prozentzeichen % und dahinter der Hexadezimalwert des Zeichens (z.B. wird der deutsche Umlaut ö durch %F6 umschrieben).
          Alle Zeichen, die in diesen Regeln als Steuerzeichen vorkommen (also &, +, = und %) werden ebenfalls hexadezimal umschrieben, und zwar genau so wie höherwertige ASCII-Zeichen.

          wenn das was da bei escape steht (teilweise) stimmt kann das was zu dem anderen da drinn steht auch nich so ganz richtig sein - denn in einer url können doch wohl auch keine steuerzeichen (angeblich 0-31) drinn stehen, oder?

          danke
          cu

          1. Hi,

            wenn das was da bei escape steht (teilweise) stimmt kann das was zu dem anderen da drinn steht auch nich so ganz richtig sein - denn in einer url können doch wohl auch keine steuerzeichen (angeblich 0-31) drinn stehen, oder?

            man schmeiße beides zusammen, dann stimmt's :-)

            Um etwas genauer zu sein: Wie eine URL aufgebaut ist, steht in RFC 1738 ftp://ftp.isi.edu/in-notes/rfc1738.txt. Die JavaScript-Funktion escape() wandelt einen String so um, daß er Parameterwert im Searchpart sein kann.

            Cheatah

            1. hi

              man schmeiße beides zusammen, dann stimmt's :-)

              ah, so is das - danke
              ich glaube ich stelle deine postings lieber nicht mehr so schnell in frage :)

              cu

              1. Hi,

                ich glaube ich stelle deine postings lieber nicht mehr so schnell in frage :)

                *peitschewiederzusammenroll* Ist auch besser so ;-)

                Cheatah

  2. Hallo
    Schau mal hier nach
    http://www.teamone.de/selfaktuell/artikel/wertueb.htm
    da ist im unteren Teil erklärt wie mit hilfe eines Javascripts Zeichen in der URL konvertiert werden können.
    Ich denke das ist das was Du suchst.

    Gruß
    Jürgen

  3. Hallo Rainer,

    Danke ich hatte eine ähnliche Frage. Ich rufe seit neuestem die Forumsarchiv / Suche über ein
    Bookmarklet ab. Nur hat dies das Problem wenn ich ein Plus vor dem Suchbegriff setze das es im Script
    hier auf <Teamone.de/> nicht richtig annkommt.

    Für alle die es interesiert das Bookmarklet:
    <javascript:javascript:ctSU=document.getSelection();if(!ctSU){void(ctSU=prompt('Suchausdruck...',''))};if(ctSU)location.href='http://www.teamone.de/cgi-local/sfasuch.pl?suchausdruck='+escape(ctSU)>

    ctSu bedeutte nich meht als ct Suche da dieses Script ein wenig angepasst (komisch Normalerweise
    schreib ich doch assimiliert :) wurde. Den Rest für andere Suchmaschienen ftp://ftp.heise.de/pub/ct/listings/0001-084.zip.

    Ich wollte ja schon fast etwas eignes Schreiben.

    jens müller