URI-komponentkodare

Om du någonsin har skickat ett värde som name=John & Jane in i en URL utan att koda det, känner du smärtan: & läses som en ny parameter och servern ser skräp. Det här verktyget procent-kodar vilken sträng som helst för säker användning som URI-komponent enligt RFC 3986, och förvandlar varje reserverat tecken till ett %HH-par (mellanslag inräknade). Klistra in ett fragment, ett frågevärde eller ett omdirigeringsmål och få tillbaka något som är säkert att konkatenera in i vilken URL som helst.

Så kodar du en URI-komponent

  1. 1

    Klistra in ditt värde

    Släpp in ett enskilt frågeparametervärde, ett sökvägssegment eller en fragmentsträng.

  2. 2

    Välj koda eller avkoda

    Byt riktning för att förvandla procent-escapes tillbaka till de ursprungliga tecknen.

  3. 3

    Kör det

    Verktyget UTF-8-kodar varje tecken och ersätter sedan varje reserverad byte med %HH.

  4. 4

    Kopiera resultatet

    Släpp utdatan direkt i din URL-mall eller API-klient.

Vad som escapas

Den här kodaren följer RFC 3986: endast den oreserverade uppsättningen lämnas orörd, A-Z a-z 0-9 - _ . ~. Allt annat blir procent-kodad UTF-8, inklusive mellanslaget och underavgränsarna ! * ' ( ) som JavaScripts encodeURIComponent skulle lämna i fred.

Tecken Kodas som
mellanslag %20
! %21
# %23
& %26
' %27
( %28
) %29
* %2A
+ %2B
/ %2F
= %3D
? %3F
é %C3%A9

Komponent kontra fullständig URI

Den här kodaren är striktare än encodeURI, som lämnar : / ? # [ ] @ ! $ & ' ( ) * + , ; = i fred eftersom de tecknen är strukturella i en URL. För ett värde du konkatenerar in i en frågesträng vill du ha den strikta formen, och det är precis vad det här verktyget producerar: det escapar till och med ! ' ( ) * och går därmed ett steg längre än JavaScripts encodeURIComponent.

const url = `/search?q=${encodeURIComponent(userInput)}`;

Vanliga fallgropar

  • Dubbelkodning: att koda något som redan är kodat ger dig %2520 i stället för %20. Avkoda alltid först om du är osäker på källan.
  • Plustecken i formulär: HTML-formulärinlämning kodar mellanslag som +, inte %20. Avkodare som följer RFC 3986 strikt (den här inräknad) förvandlar inte + tillbaka till ett mellanslag. Använd en formulärmedveten avkodare för de fallen.
  • Sökvägsavgränsare: att koda / blir här %2F. Om du vill behålla den verkliga sökvägsstrukturen, foga först ihop segmenten och koda varje för sig.

Vanliga frågor

Det är procent-kodning enligt RFC 3986, den strikta formen. Den escapar :, /, ?, # och de övriga reserverade tecknen (plus !, ', (, ) och *) eftersom en komponent inte bör bära URL-struktur inuti sig. Det gör den striktare än JavaScripts encodeURIComponent och mycket striktare än encodeURI.

%20 är RFC 3986-sättet. + för mellanslag är ett arv från application/x-www-form-urlencoded-kroppskodning. För frågesträngar i URL:er är %20 alltid säkert; + förväntas bara på servern när det producerades av en formulär-POST.

Varje tecken UTF-8-kodas först, sedan escapas varje byte. Ett tecken som 日 blir %E6%97%A5 (tre byte).

Nej. Värdet procent-kodas på serversidan för att bygga ditt resultat och lagras eller loggas inte; inget av det du klistrar in behålls efter att svaret har skickats.

Relaterade verktyg

Verktyget finns på andra språk