ByteCompress

URL Encoder

Percent-encode speciale tekens in URL's of individuele URI-componenten zodat ze veilig zijn om te verzenden in HTTP-verzoeken, querystrings en formuliergegevens. Volgt RFC 3986.

0 chars
FreeClient-sideNo signup

Een spatie in een URL-querystring breekt de aanvraag stilletjes. RFC 3986 (Uniform Resource Identifier: Generic Syntax) definieert welke tekens veilig zijn in een URL en welke percent-gecodeerd moeten worden. Percent-encoding vervangt elke onveilige byte door % gevolgd door twee hoofdletters hexadecimale cijfers. Deze browser-gebaseerde encoder past RFC 3986 onmiddellijk toe, zonder uw gegevens ergens naartoe te verzenden. Gebruik het om volledige URL's of individuele queryparameterwaarden te coderen en krijg elke keer een conforme uitvoer.

Hoe een URL te coderen

  1. Plak de URL of tekst in het invoerveld.
  2. Kies Volledige URL modus om alleen onveilige tekens te coderen, of Component modus om alle speciale tekens, inclusief & en =, te coderen.
  3. De percent-gecodeerde uitvoer verschijnt in het resultaatpaneel.
  4. Kopieer de gecodeerde string voor gebruik in uw verzoek, code of documentatie.

Begrijpen van Percent-Encoding

De RFC 3986 Standaard

RFC 3986 (IETF, 2005) definieert twee tekencategorieën in een URI. Ongereserveerde tekens (A-Z a-z 0-9 - _ . ~) kunnen zonder encoding verschijnen. Gereseveerde tekens (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) hebben een speciale structurele betekenis en moeten al dan niet worden gecodeerd, afhankelijk van de context. Elk ander teken - inclusief spaties, niet-ASCII Unicode, en tekens buiten deze sets - moet percent-gecodeerd worden.

encodeURI vs encodeURIComponent

JavaScript biedt twee codering functies. encodeURI() codeert een complete URL en laat gereserveerde tekens intact omdat ze structurele rollen vervullen. encodeURIComponent() codeert ook structurele tekens, behandelt ze als letterlijke gegevens - het is ontworpen voor individuele queryparameter namen en waarden waar & en = de URL-syntaxis zouden breken. De Volledige URL-modus van deze tool komt overeen met encodeURI; Componentmodus komt overeen met encodeURIComponent.

Voorbeeld

Invoer

Hello World! @2024

Uitvoer (Componentmodus)

Hello%20World!%20%402024

Spatie codeert als %20 (RFC 3986 standaard); @ wordt %40. Het uitroepteken is een ongereserveerd teken in sommige contexten en kan al dan niet worden gecodeerd, afhankelijk van de modus.

Veelvoorkomende Gebruikscases

  • Queryparameterwaarden - Encodeer waarden die &, =, of + bevatten voordat u ze aan een URL toevoegt
  • Zoekmachinequery's - Encodeer gebruikerszoekinvoer voordat u een omleidings-URL bouwt
  • API-verzoekconstructie - Encodeer padsegmenten die schuine strepen, spaties of speciale tekens bevatten
  • OAuth-parameters - OAuth 1.0 handtekening basisstrings vereisen percent-encoding volgens RFC 5849

Veelvoorkomende Fouten

  • Dubbel coderen - Als een waarde al percent-gecodeerd is, wordt het opnieuw coderen van de % zelf gecodeerd, wat %2520 in plaats van %20 oplevert
  • Volledige URL-modus gebruiken voor parameterwaarden - Volledige URL-modus laat & en = ongecodeerd, wat de syntaxis van de querystring breekt; gebruik Componentmodus voor parameterwaarden
  • Vergeten niet-ASCII-tekens - Niet-ASCII-tekst moet eerst worden omgezet naar UTF-8 bytes, waarna elke byte afzonderlijk percent-gecodeerd wordt

Om het proces om te keren, gebruik de URL Decoder. Voor binaire gegevens die in URL-queryparameters worden getransporteerd, codeert u eerst met de Base64 Encoder in URL-veilige modus, waarna de uitvoer al URL-veilig is zonder aanvullende percent-encoding.

Veelgestelde Vragen

Wat is het verschil tussen URL-encoding en Base64-encoding?

Percent-encoding vervangt onveilige tekens door %XX hex-sequenties, terwijl veilige tekens ongewijzigd blijven, zodat de uitvoerlengte vergelijkbaar is met de invoer. Base64 converteert alle gegevens naar een 64-teken alfabet, waardoor de grootte met 33% toeneemt, maar ervoor zorgt dat het resultaat alleen veilige ASCII-tekens bevat. Percent-encoding maakt specifieke tekens URL-veilig; Base64 codeert willekeurige binaire gegevens als tekst.

Wanneer moet ik encodeURI vs encodeURIComponent gebruiken in JavaScript?
encodeURI() is voor het coderen van een complete URL - het behoudt structurele tekens zoals : / ? # & =. encodeURIComponent() is voor het coderen van individuele waarden binnen een URL - het codeert structurele tekens zodat ze als letterlijke gegevens worden behandeld in plaats van URL-syntaxis. Bij twijfel, gebruik encodeURIComponent() voor elke door de gebruiker aangeleverde invoer.
Waarom wordt een spatie %20 in sommige encoders maar + in andere?
%20 is de RFC 3986 percent-encoding voor een spatie en is correct voor URI-padsegmenten en querywaarden. Het + teken dat een spatie vertegenwoordigt, is specifiek voor application/x-www-form-urlencoded (HTML-formulierindieningen), dat voorafging aan RFC 3986. Beide zijn geldig in hun respectieve contexten, maar %20 is de universele standaard buiten HTML-formulieren.
Werkt URL-encoding voor niet-ASCII-tekens?

Ja. Niet-ASCII-tekens worden eerst omgezet naar UTF-8 bytes, waarna elke byte afzonderlijk percent-encoded wordt. Het teken ş (U+015F) wordt %C5%9F. Het Chinese teken 中 (U+4E2D) wordt %E4%B8%AD. Moderne browsers en servers verwachten allemaal UTF-8 encoding voor niet-ASCII-tekens in URL's.

Worden mijn URL-gegevens naar uw servers gestuurd wanneer ik deze tool gebruik?

Nee. Alle encoding gebruikt encodeURI() of encodeURIComponent() die lokaal in uw browser draait. URL's, queryparameters, authenticatietokens en andere gegevens die u plakt, worden nooit naar onze servers verzonden.