Spring til indhold

URL-koder: Undgå specialtegn i URL'er Online Gratis

Gratis værktøj til at undslippe URL-strenge og kode specialtegn med det samme. Konverter mellemrum, Unicode og symboler til procent-kodet format. Perfekt til API'er, webformularer og internationale URL'er. Prøv nu!

URL-strengkoder

Indlæsningsberegner...
📚

Dokumentation

URL-kodning: Hvad det er, og hvordan det fungerer

URL-kodning, også kaldet procentkodning, er en måde at repræsentere tegn i en webadresse på ved kun at bruge et lille sæt sikre ASCII-tegn. Det fungerer ved at erstatte et usikkert tegn med et %-tegn efterfulgt af to hexadecimale cifre. Dette værktøj til URL-strengkodning koder tekst på samme måde som JavaScripts indbyggede funktion encodeURIComponent.

Hvorfor URL'er skal kodes

En URL må kun indeholde et begrænset sæt tegn: bogstaver, cifre og en håndfuld tegnsætningssymboler. Mellemrum, bogstaver med accent, tegn fra ikke-latinske alfabeter og symboler som & eller = kan ødelægge en URL eller ændre dens betydning, hvis de forekommer ukodede i den. Et mellemrum i et link kan for eksempel få en browser eller server til at læse URL'en som to separate dele. Procentkodning erstatter disse tegn med en kode, som alle browsere og servere kan læse på samme måde.

Tegn, som dette værktøj lader være uændrede

Dette værktøj ændrer aldrig følgende tegn. De går direkte igennem:

  • Store og små bogstaver: A–Z, a–z
  • Cifre: 0–9
  • Tegnsætningssymbolerne - . _ ~ ! * ' ( )

Alle andre tegn bliver procentkodet, herunder:

  • Mellemrumstegnet og tegnsætning som : / ? # [ ] @ $ & + , ; =
  • Bogstaver med accent og alle andre ikke-ASCII- eller Unicode-tegn
  • Selve det bogstavelige %-tegn, som altid bliver til %25, også hvis det allerede var en del af en procentkodet sekvens

Nogle generelle vejledninger i URL-syntaks grupperer ! * ' ( og ) sammen med anden tegnsætning som tegn, der "kan kræve kodning" i visse sammenhænge. Dette specifikke værktøj koder dem ikke, fordi det følger regelsættet for encodeURIComponent, hvor de behandles som sikre.

Sådan beregnes en procentkodet streng (formel)

Værktøjet kontrollerer hvert tegn i inputtet ét ad gangen og anvender denne regel:

  1. Hvis tegnet er et af de uændrede tegn, der er anført ovenfor, bevares det som det er.
  2. Ellers konverteres tegnet til dets UTF-8-bytesekvens. Latinske bogstaver med accent samt græske, kyrilliske og arabiske bogstaver bruger to bytes. Kinesiske, japanske og koreanske tegn bruger tre. Emojier bruger fire.
  3. Skriv hver byte som et tocifret hexadecimalt tal.
  4. Sæt et % foran hvert hexadecimalt par.
  5. Sæt resultaterne sammen i rækkefølge for at danne den kodede streng.

Regneeksempel

Input: Jürgen & Björk

Gennemgang tegn for tegn:

TegnResultat
JJ (uændret)
ü%C3%BC (UTF-8-bytes 0xC3, 0xBC)
rgenrgen (uændret)
(mellemrum)%20
&%26
(mellemrum)%20
BjBj (uændret)
ö%C3%B6 (UTF-8-bytes 0xC3, 0xB6)
rkrk (uændret)

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

Et andet eksempel viser, hvordan det uændrede sæt fungerer. Kodning af strengen -_.!~*'() giver -_.!~*'(), præcis den samme tekst, fordi hvert tegn i den tilhører sættet af ikke-reserverede tegn. Kodning af strengen 100% giver 100%25, fordi selve %-tegnet ikke er et sikkert tegn.

Afkodning af en procentkodet streng

Afkodning vender processen: hver %XX-sekvens læses som en hexadecimal byte, bytesene samles igen til deres oprindelige UTF-8-tegn, og tegnet erstatter sekvensen. For eksempel afkodes %C3%BC igen til ü, og %20 afkodes til et mellemrum. Dette værktøj koder kun; der kræves en separat afkoder for at vende processen.

Almindelige anvendelser

Procentkodning bruges, når tekst, som en person har indtastet, i stedet for tekst skrevet af en programmør, skal indgå i en URL:

  • Søgefelter, der indsætter søgeordet i adresselinjen, f.eks. ?q=shoes%20%26%20bags
  • Forespørgselsparametre, der indeholder navne, adresser eller andre brugerdata
  • Links til sider med titler på sprog, der bruger bogstaver med accent eller ikke-latinske skriftsystemer
  • API-anmodninger, der sender tokens eller identifikatorer som en del af URL'en

Kodeeksempler

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

Pythons quote lader altid bogstaver, cifre og - . _ ~ være uændrede. De fem ekstra tegn ! * ' ( ) skal angives i safe for at matche dette værktøj. Uden dem returnerer quote i stedet %21 %2A %27 %28 %29.

Historie

Ideen om at kode usikre tegn i en URL går tilbage til RFC 1738 fra 1994, et af de første dokumenter, der definerede URL-formatet. RFC 3986, som blev udgivet i 2005, opdaterede reglerne og definerede formelt sættet af "ikke-reserverede" tegn, der aldrig behøver kodning. encodeURIComponent, JavaScript-funktionen som dette værktøj er baseret på, følger et lidt bredere sæt af ikke-reserverede tegn end RFC 3986: Den lader også ! * ' ( og ) være ukodede, i overensstemmelse med en tidligere version af URI-specifikationen.

Ofte stillede spørgsmål

Hvad er forskellen mellem URL-kodning og URL-escaping? Det er det samme. Begge udtryk beskriver procentkodning, hvor et tegn erstattes med % efterfulgt af to hexadecimale cifre.

Hvorfor forbliver !, *, ', ( og ) uændrede i dette værktøj? Dette værktøj bruger encodeURIComponent, som behandler disse fem tegn som sikre og lader dem stå præcis, som de blev skrevet. Andre kodningsfunktioner og nogle servere forventer muligvis stadig, at de kodes, så kontrollér målsystemet, hvis det giver problemer.

Hvad er forskellen mellem %20 og + for et mellemrum? Begge repræsenterer et mellemrum. %20 er den generelle procentkodning for et mellemrum. +-tegnet er et særtilfælde, der kun bruges i application/x-www-form-urlencoded-data, det format som HTML-formularindsendelser bruger, og ikke dette værktøj.

Afkoder dette værktøj tekst, der allerede er kodet? Nej. Det koder kun. Hvis inputtet allerede indeholder et %-tegn, behandles dette % som et bogstaveligt tegn og bliver til %25 i outputtet i stedet for at blive ladt uændret.

Hvordan håndteres ikke-latinske tegn, f.eks. kinesisk eller arabisk tekst? Hvert tegn konverteres først til sin UTF-8-bytesekvens, hvorefter hver byte procentkodes. Et kinesisk tegn bruger tre bytes og giver derfor tre %XX-grupper. Et arabisk bogstav bruger to bytes og giver derfor to.

Hvornår nægter værktøjet at kode tekst? Kun når teksten indeholder halvdelen af et surrogatpar. Et surrogatpar er den todelte kode, der gemmer et tegn over U+FFFF, f.eks. en emoji. En enkeltstående halvdel har ingen gyldig UTF-8-form, så værktøjet viser en fejl i stedet for et resultat. Almindelig indtastning kan ikke frembringe en sådan; den kommer normalt fra en afkortet kopiering eller et ødelagt link.

Skal jeg kode en hel URL eller kun en del af den? Kod kun de dele, der indeholder brugerdata, f.eks. forespørgselsværdier eller sti-segmenter, ikke de dele, der udgør URL'ens struktur, som https:// og domænenavnet. Kodning af en hel URL med en komponentkoder ville også omdanne dens :-, /- og ?-tegn til procentkoder og dermed ødelægge adressen.

Referencer

  1. RFC 3986 — Uniform Resource Identifier (URI): Generisk syntaks
  2. Procentkodning — Wikipedia
  3. MDN — encodeURIComponent()
  4. URL-standarden — WHATWG