URI-component-encoder

Als je ooit een waarde als name=John & Jane in een URL hebt gezet zonder die te coderen, ken je de ellende: de & wordt als een nieuwe parameter gelezen en de server ziet onzin. Dit hulpmiddel codeert elke tekenreeks procentueel voor veilig gebruik als URI-component volgens RFC 3986, en zet elk gereserveerd teken om in een %HH-paar (spaties inbegrepen). Plak een fragment, een querywaarde of een omleidingsdoel en krijg iets veiligs om aan elke URL te plakken.

Zo codeer je een URI-component

  1. 1

    Plak je waarde

    Voer één queryparameterwaarde, padsegment of fragmenttekenreeks in.

  2. 2

    Kies coderen of decoderen

    Wissel van richting om procent-escapes terug om te zetten naar de oorspronkelijke tekens.

  3. 3

    Voer het uit

    Het hulpmiddel codeert elk teken in UTF-8 en vervangt daarna elke gereserveerde byte door %HH.

  4. 4

    Kopieer het resultaat

    Zet de uitvoer direct in je URL-sjabloon of API-client.

Wat wordt geëscapet

Deze encoder volgt RFC 3986: alleen de niet-gereserveerde set blijft ongemoeid, A-Z a-z 0-9 - _ . ~. Al het andere wordt procentgecodeerde UTF-8, inclusief de spatie en de subscheidingstekens ! * ' ( ) die JavaScripts encodeURIComponent met rust zou laten.

Teken Gecodeerd als
spatie %20
! %21
# %23
& %26
' %27
( %28
) %29
* %2A
+ %2B
/ %2F
= %3D
? %3F
é %C3%A9

Component versus volledige URI

Deze encoder is strenger dan encodeURI, dat : / ? # [ ] @ ! $ & ' ( ) * + , ; = met rust laat omdat die tekens structureel zijn in een URL. Voor een waarde die je in een querystring plakt wil je de strenge vorm, en dat is precies wat dit hulpmiddel produceert: het escapet zelfs ! ' ( ) * en gaat daarmee een stap verder dan JavaScripts encodeURIComponent.

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

Veelvoorkomende valkuilen

  • Dubbele codering: iets coderen dat al gecodeerd is, geeft %2520 in plaats van %20. Decodeer altijd eerst als je niet zeker bent van de bron.
  • Plustekens in formulieren: het indienen van HTML-formulieren codeert spaties als +, niet als %20. Decoders die RFC 3986 strikt volgen (deze inbegrepen) zetten + niet terug om in een spatie. Gebruik in die gevallen een formulierbewuste decoder.
  • Padscheidingstekens: / coderen wordt hier %2F. Als je de echte padstructuur wilt behouden, voeg dan eerst de segmenten samen en codeer elk afzonderlijk.

Veelgestelde vragen

Het is procentcodering volgens RFC 3986, de strenge vorm. Het escapet :, /, ?, # en de overige gereserveerde tekens (plus !, ', (, ) en *) omdat een component geen URL-structuur in zich mag dragen. Daarmee is het strenger dan JavaScripts encodeURIComponent en veel strenger dan encodeURI.

%20 is de manier volgens RFC 3986. + voor een spatie is een erfenis van de application/x-www-form-urlencoded-body-codering. Voor querystrings in URLs is %20 altijd veilig; + wordt alleen op de server verwacht als het door een formulier-POST is geproduceerd.

Elk teken wordt eerst in UTF-8 gecodeerd, daarna wordt elke byte geëscapet. Een teken als 日 wordt %E6%97%A5 (drie bytes).

Nee. De waarde wordt aan de serverzijde procentueel gecodeerd om je resultaat te bouwen en wordt niet opgeslagen of gelogd; niets van wat je plakt blijft bewaard nadat het antwoord is verstuurd.

Gerelateerde tools

Tool beschikbaar in andere talen