URL-encoder

Procentcodeer tekst zodat die veilig in een URL kan worden meegegeven, volledig in je browser.

Draait volledig in je browser. Er wordt niets geüpload, gelogd of opgeslagen.

Een URL heeft een grammatica, en de tekens die daarbij horen — "?", "&", "/", "#", spaties — moeten worden ge-escapet als ze deel uitmaken van een waarde en niet van de structuur. Dat escapen is procentcodering.

Hoe het werkt

Elk teken dat niet in de niet-gereserveerde set van RFC 3986 zit — letters, cijfers, "-", ".", "_" en "~" — wordt vervangen door een procentteken en de hexadecimale waarde van elk van zijn UTF-8-bytes. Een spatie wordt %20 en een letter met accent wordt twee escapes, omdat die in UTF-8 twee bytes is.

De stijl voor formuliergegevens bestaat omdat het verzenden van HTML-formulieren ouder is dan die regel: daar is een spatie "+" en wordt "~" ook ge-escapet. Kies die stijl als je een application/x-www-form-urlencoded-body opbouwt, en de componentstijl voor al het andere.

Voorbeelden

Geval Invoer Resultaat
Een zoekterm die in een querystring komt coffee & cake coffee%20%26%20cake
Dezelfde zoekterm als formuliergegevens coffee & cake coffee+%26+cake

Veelgestelde vragen

Moet ik hiermee een hele URL coderen?

Nee. Een volledige URL coderen escapet ook de "://" en de scheidingstekens, en laat je achter met een string die geen enkele client kan volgen. Codeer de waarden afzonderlijk en bouw er daarna de URL mee op.

Waarom wordt "!" hier gecodeerd terwijl de console van mijn browser het laat staan?

encodeURIComponent van JavaScript slaat "!", "'", "(", ")" en "*" bewust over, ook al reserveert RFC 3986 ze. Ze coderen wordt altijd geaccepteerd en voorkomt verrassingen met strengere parsers, dus deze tool doet het.

En de "#" van een fragment?

Een letterlijke "#" in een waarde moet als %23 worden gecodeerd; anders wordt alles erachter gelezen als het fragment en bereikt het de server nooit.

Goed om te weten

  • Alles gebeurt in je browser. Wat je plakt, wordt niet geüpload, niet gelogd en niet opgeslagen.

Bronnen

Alle tools in Code