Hoppa till huvudinnehåll

Koda frågesträngsparametrar på rätt sätt

Verktyget har två lägen. Komponent (encodeURIComponent) är för ett enskilt parameternamn eller värde; Fullständig URL (encodeURI) är för en hel URL vars struktur redan är korrekt. Att blanda ihop dem är den vanligaste orsaken till trasiga frågesträngar.

Genomräknat exempel

Fullständig URL lämnar & kvar i värdet, så servern läser två parametrar i stället för en.

Indata
https://example.com/search?q=salt & pepper&page=2
Resultat · encodeURI()
https://example.com/search?q=salt%20&%20pepper&page=2

Parametrar som servern läser

  • "q" = "salt "
  • " pepper" = ""
  • "page" = "2"

Om värdet först kodas i läget Komponent förblir det en enda parameter.

Indata
salt & pepper
Resultat · encodeURIComponent()
salt%20%26%20pepper

https://example.com/search?q=salt%20%26%20pepper&page=2

Parametrar som servern läser

  • "q" = "salt & pepper"
  • "page" = "2"

Läget Komponent jämfört med Fullständig URL, tecken för tecken

TeckenKomponentFullständig URL
:%3A:
/%2F/
?%3F?
#%23#
&%26&
=%3D=
+%2B+
␠%20%20
é%C3%A9%C3%A9

Så hanterar verktyget det

  • Koda varje parameternamn och värde separat i läget Komponent, som kodar om & = ? # + och /.
  • Foga ihop de kodade paren som namn=värde med & emellan och lägg till resultatet efter ? i URL:en.
  • Använd Fullständig URL bara på en hel URL: läget lämnar : / ? # & = + orörda och kan därför inte skydda ett värde som innehåller dem.

Guider för URL-kodning