Naar inhoud springen

URL-encoder: Speciale tekens in URL's online gratis ontsnappen

Gratis URL-string ontsnappingsgereedschap om speciale tekens direct te coderen. Converteer spaties, Unicode en symbolen naar percent-gecodeerd formaat. Perfect voor API's, webformulieren en internationale URL's. Probeer het nu!

URL String Ontsnapper

Laadcalculator...
📚

Documentatie

URL-codering: wat het is en hoe het werkt

URL-codering, ook wel procentcodering genoemd, is een manier om tekens in een webadres weer te geven met alleen een kleine reeks veilige ASCII-tekens. Daarbij wordt een onveilig teken vervangen door een teken %, gevolgd door twee hexadecimale cijfers. Deze URL-tekenreeksencoder codeert tekst op dezelfde manier als de ingebouwde JavaScript-functie encodeURIComponent.

Waarom URL's codering nodig hebben

Een URL mag slechts een beperkte reeks tekens bevatten: letters, cijfers en enkele leestekens. Spaties, letters met accenten, tekens uit niet-Latijnse alfabetten en symbolen zoals & of = kunnen een URL ongeldig maken of de betekenis ervan veranderen als ze er ongecodeerd in staan. Een spatie in een link kan er bijvoorbeeld voor zorgen dat een browser of server de URL als twee afzonderlijke delen leest. Procentcodering vervangt deze tekens door een code die elke browser en server op dezelfde manier kan lezen.

Tekens die deze tool ongewijzigd laat

Deze tool verandert de volgende tekens nooit. Ze worden rechtstreeks doorgelaten:

  • Hoofdletters en kleine letters: A–Z, a–z
  • Cijfers: 0–9
  • De leestekens - . _ ~ ! * ' ( )

Elk ander teken wordt procentgecodeerd, waaronder:

  • Het spatie-teken en leestekens zoals : / ? # [ ] @ $ & + , ; =
  • Letters met accenten en alle andere niet-ASCII- of Unicode-tekens
  • Een letterlijk teken % zelf, dat altijd %25 wordt, ook als het al deel uitmaakte van een procentgecodeerde reeks

Sommige algemene handleidingen over URL-syntaxis rekenen ! * ' ( en ) samen met andere leestekens tot tekens die in bepaalde contexten mogelijk moeten worden gecodeerd. Deze specifieke tool codeert ze niet, omdat hij de regelset van encodeURIComponent volgt, waarin ze als veilig worden beschouwd.

Een procentgecodeerde tekenreeks berekenen (formule)

De tool controleert elk teken van de invoer afzonderlijk en past deze regel toe:

  1. Als het teken een van de hierboven genoemde ongewijzigde tekens is, blijft het ongewijzigd.
  2. Zet het teken anders om in de UTF-8-byte-reeks. Letters uit het Latijnse alfabet met accenten, Griekse en Cyrillische letters en Arabische letters gebruiken twee bytes. Chinese, Japanse en Koreaanse tekens gebruiken er drie. Emoji gebruiken er vier.
  3. Schrijf elke byte als een hexadecimaal getal van twee cijfers.
  4. Zet vóór elk hexadecimaal paar een %.
  5. Voeg de resultaten in de juiste volgorde samen om de gecodeerde tekenreeks te vormen.

Uitgewerkt voorbeeld

Invoer: Jürgen & Björk

Stap voor stap, teken voor teken:

TekenResultaat
JJ (ongewijzigd)
ü%C3%BC (UTF-8-bytes 0xC3, 0xBC)
rgenrgen (ongewijzigd)
(spatie)%20
&%26
(spatie)%20
BjBj (ongewijzigd)
ö%C3%B6 (UTF-8-bytes 0xC3, 0xB6)
rkrk (ongewijzigd)

Uitvoer: J%C3%BCrgen%20%26%20Bj%C3%B6rk

Een tweede voorbeeld laat zien hoe de reeks ongewijzigde tekens werkt. Het coderen van de tekenreeks -_.!~*'() levert -_.!~*'() op, precies dezelfde tekst, omdat elk teken tot de niet-gereserveerde reeks behoort. Het coderen van de tekenreeks 100% levert 100%25 op, omdat het teken % zelf geen veilig teken is.

Een procentgecodeerde tekenreeks decoderen

Decoderen keert het proces om: elke reeks %XX wordt gelezen als een hexadecimale byte, de bytes worden weer samengevoegd tot hun oorspronkelijke UTF-8-teken en dat teken vervangt de reeks. Zo wordt %C3%BC bijvoorbeeld weer gedecodeerd naar ü en wordt %20 gedecodeerd naar een spatie. Deze tool codeert alleen; voor het omkeren van het proces is een afzonderlijke decoder nodig.

Veelvoorkomende toepassingen

Procentcodering wordt gebruikt wanneer tekst die door een persoon is ingevoerd, en niet door een programmeur is geschreven, onderdeel van een URL moet worden:

  • Zoekvakken die de zoekterm in de adresbalk plaatsen, zoals ?q=shoes%20%26%20bags
  • Queryparameters met namen, adressen of andere gebruikersgegevens
  • Links naar pagina's met titels in talen waarin letters met accenten of niet-Latijnse schriften worden gebruikt
  • API-verzoeken die tokens of identificatiegegevens als onderdeel van de URL doorgeven

Codevoorbeelden

1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
4

Python's quote laat letters, cijfers en - . _ ~ altijd ongemoeid. De vijf extra tekens ! * ' ( ) moeten in safe worden vermeld om deze tool na te bootsen. Zonder die tekens retourneert quote in plaats daarvan %21 %2A %27 %28 %29.

Geschiedenis

Het idee om onveilige tekens in een URL te coderen gaat terug tot RFC 1738 uit (4.410 cm) 1994, een van de eerste documenten waarin het URL-formaat werd gedefinieerd. RFC 3986, gepubliceerd in 2005, werkte de regels bij en definieerde formeel de reeks ‘niet-gereserveerde’ tekens die nooit hoeven te worden gecodeerd. encodeURIComponent, de JavaScript-functie waarop deze tool is gebaseerd, volgt een iets ruimere reeks niet-gereserveerde tekens dan RFC 3986: ook ! * ' ( en ) blijven ongecodeerd, overeenkomstig een eerdere versie van de URI-specificatie.

Veelgestelde vragen

Wat is het verschil tussen URL-codering en URL-escaping? Het is hetzelfde. Beide termen beschrijven procentcodering, waarbij een teken wordt vervangen door % gevolgd door twee hexadecimale cijfers.

Waarom blijven !, *, ', ( en ) in deze tool ongewijzigd? Deze tool gebruikt encodeURIComponent, dat deze vijf tekens als veilig beschouwt en ze precies laat zoals ze zijn ingevoerd. Andere coderingsfuncties en sommige servers kunnen nog steeds verwachten dat ze worden gecodeerd. Controleer daarom het doelsysteem als dit problemen veroorzaakt.

Wat is voor een spatie het verschil tussen %20 en +? Beide stellen een spatie voor. %20 is de algemene procentcodering voor een spatie. Het teken + is een speciaal geval dat alleen wordt gebruikt in application/x-www-form-urlencoded-gegevens, het formaat voor HTML-formulierverzendingen, en niet door deze tool.

Decodeert deze tool al gecodeerde tekst? Nee. De tool codeert alleen. Als de invoer al een teken % bevat, wordt dat % behandeld als een letterlijk teken en in de uitvoer %25, in plaats van het ongewijzigd te laten.

Hoe worden niet-Latijnse tekens, zoals Chinese of Arabische tekst, verwerkt? Elk teken wordt eerst omgezet in zijn UTF-8-byte-reeks, waarna elke byte procentgecodeerd wordt. Een Chinees teken gebruikt drie bytes en levert dus drie %XX-groepen op. Een Arabische letter gebruikt twee bytes en levert dus twee groepen op.

Wanneer weigert de tool tekst te coderen? Alleen wanneer de tekst een helft van een surrogaatpaar bevat. Een surrogaatpaar is de tweedelige code waarmee een teken boven U+FFFF wordt opgeslagen, zoals een emoji. Een losse helft heeft geen geldige UTF-8-vorm. Daarom toont de tool een fout in plaats van een resultaat. Gewoon typen kan zo'n teken niet opleveren; meestal ontstaat het door een afgebroken kopie of een defecte link.

Moet ik een volledige URL coderen of slechts een deel ervan? Codeer alleen de delen met gebruikersgegevens, zoals querywaarden of padsegmenten, niet de delen die de structuur van de URL vormen, zoals https:// en de domeinnaam. Als een componentencoder een volledige URL codeert, worden ook de tekens :, / en ? omgezet in procentcodes, waardoor het adres niet meer werkt.

Referenties

  1. RFC 3986 — Uniform Resource Identifier (URI): Generic Syntax
  2. Procentcodering — Wikipedia
  3. MDN — encodeURIComponent()
  4. URL Standard — WHATWG