mixmastertobsi: javascript encodeuri - urlencode

Hallo,

ich habe das Problem, dass PHP und JS einen Link unterschiedlich codieren.

Bei PHP wird der Link mit urlencode codiert und bei JS encodeuri.

Ein Leerzeichen ist dann bei JS "%20" und bei PHP "%2B".

An was liegts und wie bekomme ich es gleich.

  1. Tach!

    ich habe das Problem, dass PHP und JS einen Link unterschiedlich codieren.

    Bei PHP wird der Link mit urlencode codiert und bei JS encodeuri.

    Ein Leerzeichen ist dann bei JS "%20" und bei PHP "%2B".

    %2B ist ein +. urlencode() konvertiert Leerzeichen zu +. Wenn du das dann nochmal kodierst, kommt %2B raus. Müsste aber auch noch andere Probleme erzeugen, weil weitere Kodierungen nochmal kodiert werden. Oder du hast den Wert nicht mit dem Gegenstück zu urlencode() dekodiert und danach den Wert wieder mit einer encodeuri-kompatiblen Funktion.

    An was liegts und wie bekomme ich es gleich.

    PHPs rawurlencode() kodiert Leerzeichen zu %20.

    dedlfix.

  2. Lieber mixmastertobsi,

    Bei PHP wird der Link mit urlencode codiert

    dann nimm halt rawurlencode.

    und bei JS encodeuri.

    Du meinst encodeURI (mit korrektem CaMeL-cAsE).

    Ein Leerzeichen ist dann bei JS "%20"

    Entspricht letztlich dem ASCII-Wert von 32 oder 0x0020.

    und bei PHP "%2B".

    Das kann eigentlich nicht sein, da 0x002B laut ASCII ein + sein sollte.

    Hast Du vielleicht bei PHP eine andere Zeichenkodierung (z.B. ISO-8859-1) in Verwendung, während JavaScript (eigentlich) immer UTF-8 verwendet?

    Liebe Grüße,

    Felix Riesterer.

    1. Hi,

      Hast Du vielleicht bei PHP eine andere Zeichenkodierung (z.B. ISO-8859-1) in Verwendung, während JavaScript (eigentlich) immer UTF-8 verwendet?

      im Bereich von ASCII unterscheiden sich Utf-8 und iso-8859-1 nicht.

      EBCDIC (das wär ne Codierung, die sich im ASCII-Bereich unterscheidet von UTF-8) kann's auch nicht sein, da ist 2B das Zeichen CSP (Control Sequence Prefix -> sowas wie: Achtung, jetzt kommen Steuerzeichenfolgen)

      Weitere Codierungen, die sich im ASCII-Bereich unterscheiden, fallen mir grad nicht ein.

      cu,
      Andreas a/k/a MudGuard