URL-kodning och avkodning

**Metabeskrivning (153):** Procentkoda text för webbadresser eller avkoda %HH-sekvenser tillbaka till tecken. Jämför komponentläge med fullt URI-läge och se varför %20 och + inte är samma. **URL:** `/url-encode-decode/` **Schema:** `WebApplication` + `FAQPage` + `BreadcrumbList`

Alla beräkningar körs i webbläsaren. Ingenting du anger skickas till en server.

01 kalkylator

Resultaten uppdateras medan du skriver. Ctrl/Cmd+Enter kopierar huvudresultatet.

Resultat

    Visa uträkning

      URL-kodning och avkodning tillämpar RFC 3986 procentkodning på text och vänder tillbaka %HH-sekvenser till tecken. Komponentläget kodar reserverade tecken som /, ? och & så att de kan sitta säkert i en enda frågeparameter. Full-URI-läge bevarar strukturella avgränsare så att en komplett adress förblir en användbar länk. Utrymmeshantering erbjuder både %20 och det formulärkodande plustecknet.

      All kodning och avkodning körs i din webbläsare. Inget du klistrar in skickas till en server.

      Koda text för säker användning i en URL

      Concept diagram: Indata leads to Koda text för säker användning i e… leads to ResultatIndataKoda text för säkeranvändning i e…Resultat
      Koda text för säker användning i en URL.

      Procentkodning ersätter osäkra eller reserverade byte med ett procenttecken följt av två hexadecimala siffror. Siffrorna är bytevärdet, vanligtvis från UTF-8. Ange en sträng, välj komponent- eller full-URI-läge och kopiera det kodade resultatet till en frågesträng, sökvägssegment eller omdirigeringsmål.

      Karaktärer som redan finns i det oreserverade setet passerar oförändrat. Allt annat blir %HH-sekvenser i komponentläge. Kodning är reversibel när samma regler används för avkodning; att blanda formkodning plustecken med "%20" i sökväg är den vanliga källan till trasiga rundresor.

      Avkoda en procentkodad sträng

      Scale bar: 1 Indataenhet equals 1.8 Utdataenhet1 Indataenhet1.8 Utdataenhet
      Avkoda en procentkodad sträng.

      Avkodning hittar varje % följt av två hexadecimala siffror, konverterar det paret till en byte och bygger om den ursprungliga texten med den valda teckenkodningen. En ensam % eller en % med icke-hexadecimala siffror är ett fel. Plustecken kan valfritt behandlas som mellanslag när inmatningen kom från "application/x-www-form-urlencoded" kroppar.

      Kapslad kodning visas när ett värde kodades två gånger. Avkodning en gång kan fortfarande lämna "%25"-sekvenser som representerar en bokstavlig procent. Avkoda igen endast när det andra lagret var avsiktligt; blind dubbelavkodning korrumperar data som innehöll ett riktigt %-tecken.

      Förstå reserverade och oreserverade tecken

      Concept diagram: Indata leads to Förstå reserverade och oreserverad… leads to ResultatIndataFörstå reserverade ochoreserverad…Resultat
      Förstå reserverade och oreserverade tecken.

      RFC 3986 delar upp ASCII i oreserverade tecken som aldrig behöver kodas i en URI, och reserverade tecken som har en strukturell betydelse som avgränsare. Oreserverade bokstäver, siffror och -_.~ förblir bokstavliga. Reserverade märken som /, ? och & måste vara procentkodade när de visas som data snarare än som syntax som ramar in webbadressen.

      Oreserverad: A till Z, a till z, 0 till 9, bindestreck -, understreck _, punkt ., tilde ~

      Reserverad (gen-delims): `: / ?

      Reserverad (underdelimeringar): ! $ & ' ( ) * + , ; =

      Oreserverade tecken förblir bokstavliga. Reserverade tecken måste kodas när de visas som data snarare än som avgränsare. Ett frågetecken inuti ett parametervärde är data; ett frågetecken som startar frågesträngen är struktur. Lägesval är hur räknaren vet vilken roll varje karaktär spelar.

      Koda en hel URL kontra en enda parameter

      Comparison chart of Option A versus Option B across Case 1, Case 2, Case 3Case 1Case 2Case 3Option AOption B
      Koda en hel URL kontra en enda parameter.

      Full-URI-kodning, som liknar JavaScript "encodeURI", lämnar strukturella tecken ifred så att "https://" och snedstreck av sökväg överlever. Komponentkodning, liknande "encodeURIComponent", kodar dessa tecken så att ett värde kan sitta inuti en parameter utan att bryta den omgivande URL:en. Att välja fel läge förstör antingen en länk eller lämnar avgränsare som delar upp frågan felaktigt.

      InputFull-URI styleComponent style
      https://example.com/a bhttps://example.com/a%20bhttps%3A%2F%2Fexample.com%2Fa%20b
      red&bluered&bluered%26blue
      a=ba=ba%3Db

      Om du kodar en hel URL med komponentläge förstörs den som en länk: schemats kolon och snedstreck blir %3A och %2F. Om du kodar en enskild parameter med fullt URI-läge lämnas "&" och "=" intakta, vilket delar upp frågan felaktigt. Välj det läge som matchar den plats som strängen kommer att uppta.

      Koda ett snedstreck och ett frågetecken

      Concept diagram: Indata leads to Koda ett snedstreck och ett fråget… leads to ResultatIndataKoda ett snedstreck ochett fråget…Resultat
      Koda ett snedstreck och ett frågetecken.

      Fixtursträngen / och ? i komponentläge blir %2F%20och%20%3F. Snedstrecket och frågetecknet är reserverade avgränsare som behandlas här som nyttolasttext, så var och en escapes. Mellanslag blir "%20", medan bokstäverna i "och" är oreserverade och passerar oförändrade från vänster till höger över strängen.

      CharacterReasonEncoded
      /reserved path delimiter%2F
      spacenot unreserved%20
      a, n, dunreserved lettersunchanged
      ?reserved query delimiter%3F

      Stega genom strängen från vänster till höger: koda /, koda mellanslag, skicka and, koda mellanslag, koda ?. Resultatet %2F%20and%20%3F är säkert att placera i en frågeparameter som heter till exempel q. Att använda fullt URI-läge på samma sträng skulle lämna / och ? bokstavliga, vilket är korrekt endast när dessa tecken är avsedda som struktur snarare än som nyttolasttext.

      Förstå %20 kontra plustecknet

      Comparison chart of Option A versus Option B across Case 1, Case 2, Case 3Case 1Case 2Case 3Option AOption B
      Förstå %20 kontra plustecknet.

      Ett mellanslag kodar som %20 i URI-sökvägar och i moderna frågesträngar som följer RFC 3986. HTML-formulär som skickas som application/x-www-form-urlencoded kodar historiskt mellanslag som + istället. Båda konventionerna förekommer i produktionstrafik, och att behandla dem som identiska är den vanligaste rymdkodningsbuggen vid avkodning av blandade indata.

      ContextSpace encoding
      Path segment%20
      RFC 3986 query%20
      Form body / legacy query+

      En bokstavlig plusteckendata måste kodas som "%2B", annars kommer en formuläravkodare att behandla den som ett mellanslag. Kalkylatorn anger vilken utrymmeskonvention som är aktiv så att ett avkodat "+" inte misstas för ett plustecken när formulärläget är på, och ett "%20" inte avvisas när sökvägsläget är på.

      Dela upp en URL i dess delar

      Concept diagram: Indata leads to Dela upp en URL i dess delar leads to ResultatIndataDela upp en URL i dessdelarResultat
      Dela upp en URL i dess delar.

      En typisk URL har ett schema, värd, valfri port, sökväg, frågesträng och fragment, och kodningsreglerna skiljer sig åt mellan olika delar. Strukturella avgränsare som ://, /, ?, &, = och # förblir bokstavliga när de ramar in adressen.

      Parameternamn, parametervärden och sökvägssegment som bär data kodas individuellt i komponentläge innan dessa avgränsare förenas med dem.

      https://example.com:443/search?q=a%20b&lang=en#top
      └─┬─┘   └─────┬─────┘ └─┬──┘ └───────┬───────┘ └┬┘
      scheme       host     path        query      fragment
      PartRole
      SchemeProtocol, such as https
      HostDomain or IP, with optional port
      PathResource location, slash-separated
      QueryParameter list after ?, joined by &
      FragmentClient-side location after #, not sent to the server in the request URI the same way

      Koda parameternamn och -värden individuellt i komponentläge och anslut sedan med bokstavliga "&" och "=". Koda sökvägssegment individuellt om de innehåller mellanslag eller reserverade tecken, och behåll snedstreck som skiljer segment bokstavliga.

      Läs teckenkodningstabellen

      Concept diagram: Indata leads to Läs teckenkodningstabellen leads to ResultatIndataLästeckenkodningstabellenResultat
      Läs teckenkodningstabellen.

      Tabellen nedan listar vanliga reserverade och osäkra tecken med deras procentformer under UTF-8-bytekodning. Ett blanksteg blir %20, ett et-tecken %26 och en hash %23. Icke-ASCII-tecken expanderar till flera "%HH"-enheter eftersom varje UTF-8-byte kodas separat snarare än som en enda abstrakt glyf.

      CharPercentNotes
      space%20Or + in form encoding
      !%21
      #%23Fragment delimiter
      $%24
      &%26Query pair delimiter
      '%27
      (%28
      )%29
      +%2BLiteral plus
      ,%2C
      /%2FPath delimiter
      :%3AScheme / host separator
      ;%3B
      =%3DParameter assignment
      ?%3FQuery start
      @%40Userinfo separator
      [%5B
      ]%5D

      Icke-ASCII-text uttrycks först som UTF-8-byte, sedan procentkodas varje byte. Ett enda tecken kan därför expandera till två eller tre %HH-enheter. Karaktärskodande djupdykning för Shift JIS och liknande äldre set live med verktyget Base64; den här sidan länkar istället för att upprepa den katalogen.

      Vanliga frågor

      Vad är procentkodning?

      Procentkodning ersätter en byte med en "%" följt av två hexadecimala siffror av den bytens värde. Den låter reserverade och icke-ASCII-tecken färdas i webbadresser utan att läsas som syntax. Avkodning vänder ersättningen.

      När ska komponentkodning användas?

      Använd komponentkodning för ett enda parameternamn eller -värde, ett sökvägssegment som är ren data eller någon sträng som kommer att infogas bredvid strukturella avgränsare. Den kodar /, ?, & och = så att de inte kan dela URL:en.

      När ska full-URI-kodning användas?

      Använd full-URI-kodning när inmatningen redan är en fullständig URL och endast olagliga tecken som blanksteg bör ändras. Strukturella kolon och snedstreck förblir bokstavliga så resultatet förblir en klickbar adress.

      Varför blir / och ? %2F%20och%20%3F?

      I komponentläge behandlas snedstrecket och frågetecknet som data, så de kodar till %2F och %3F. Mellanslag blir %20. Bokstäver i och är oreserverade och förblir som de är.

      Är + samma som %20?

      Nej. %20 är RFC 3986-kodningen för ett mellanslag. + betyder endast utrymme i application/x-www-form-urlencoded data. Ett bokstavligt plus måste vara "%2B", annars förvandlar formavkodare det till ett mellanslag.

      Vilka tecken behöver aldrig kodas?

      Den oreserverade uppsättningen: bokstäver, siffror, bindestreck, understreck, punkt och tilde. Dessa karaktärer förblir bokstavliga i båda lägena. Att koda dem fungerar fortfarande men ger onödig längd.

      Hur kodas icke-ASCII-tecken?

      De konverteras först till UTF-8 byte, sedan procentkodas varje byte. Ett synligt tecken kan bli flera %HH-sekvenser. Avkodning måste använda UTF-8 för att bygga om originaltexten.

      Åtgärdar avkodning två gånger en trasig URL?

      Endast om värdet avsiktligt kodats två gånger. Annars förstör det andra passet bokstavliga %-sekvenser som var en del av data. Avkoda en gång, inspektera och avkoda igen endast när %25-mönster visar ett andra lager.

      Är detta samma som Base64?

      Nej. Procentkodning escape-tecken för URI:er. Base64 mappar godtyckliga bytes till ett 64-teckens alfabet för transport i textprotokoll. Använd var och en för sitt eget jobb.

      Laddas inklistrade webbadresser upp?

      Nej. Kodning och avkodning körs endast i webbläsaren. Frågesträngar som innehåller tokens eller sessionsfragment överförs inte till en server av detta verktyg.

      Sammanfattning

      URL-kodning och avkodning procentkodar och avkodar text enligt RFC 3986-regler, med separata lägen för fullständiga URI:er och enskilda komponenter. Fixturen / och ? blir %2F%20och%20%3F i komponentläge. Spaces använder %20 i URI-sammanhang och kan använda + i formkodning, vilket är en annan konvention.

      Reserverade karaktärer behåller sin betydelse endast när de lämnas bokstavlig som struktur; koda dem när de är nyttolast. Allt arbete stannar på enheten.

      Relaterade miniräknare

      Base64 Koda och avkoda · IP-subnätskalkylator · Hexkalkylator