Onlineverktyg för att escape:a specialtecken i URL-strängar
Ett onlineverktyg för att escape:a specialtecken i en URL-sträng. Ange en URL, och detta verktyg kommer att koda den genom att escape:a specialtecken, vilket säkerställer att den är säker att använda i webbapplikationer.
URL-strängsescapare
Dokumentation
URL-strängsescapareverktyg
Introduktion
Inom webbutveckling och internetkommunikation spelar URL:er (Uniform Resource Locators) en avgörande roll i att identifiera resurser på webben. Men URL:er har begränsningar för de tecken de kan innehålla. Vissa tecken har speciella betydelser, medan andra är osäkra att använda i URL:er på grund av risken för felaktig tolkning eller korruption under överföring.
URL-kodning, även känd som procentkodning, är en mekanism för att konvertera specialtecken till ett format som kan överföras över internet. Detta verktyg gör att du kan mata in en URL-sträng och escapera specialtecken, vilket säkerställer att URL:en är giltig och kan tolkas korrekt av webbläsare och servrar.
Förstå URL-kodning
Vad är URL-kodning?
URL-kodning innebär att osäkra ASCII-tecken ersätts med en %
följt av två hexadecimala siffror som representerar tecknets ASCII-kod. Det säkerställer att information överförs över internet utan förändring.
Till exempel, mellanslagstecknet ' '
ersätts med %20
.
Varför är URL-kodning nödvändig?
URL:er kan endast skickas över internet med hjälp av ASCII-teckenuppsättningen. Eftersom URL:er ofta innehåller tecken utanför denna uppsättning måste de konverteras till ett giltigt ASCII-format. URL-kodning garanterar att specialtecken inte orsakar oavsiktliga effekter eller fel i webbförfrågningar.
Tecken som behöver kodas
Enligt RFC 3986-specifikationen måste följande tecken som är reserverade i URL:er procentkodas om de ska användas bokstavligt:
- Allmänna avgränsare:
:
,/
,?
,#
,[
,]
,@
- Underavgränsare:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
Dessutom måste alla icke-ASCII-tecken, inklusive tecken i Unicode, kodas.
Hur fungerar URL-kodning?
Kodningsprocessen
-
Identifiera specialtecken: Parsar URL-strängen och identifierar tecken som inte är oavsett ASCII-tecken (bokstäver, siffror,
-
,.
,_
,~
). -
Konvertera till ASCII-kod: För varje specialtecken, hämta dess ASCII- eller Unicode-kodpunkt.
-
Konvertera till UTF-8 byte-sekvens (om nödvändigt): För icke-ASCII-tecken, koda tecknet till en eller flera byte med hjälp av UTF-8-kodning.
-
Konvertera till hexadecimal: Konvertera varje byte till dess tvåsiffriga hexadecimala motsvarighet.
-
Prefixa med procenttecken: Föregå varje hexadecimalt byte med ett
%
-tecken.
Exempel på kodning
-
Tecken:
' '
(Mellanslag)- ASCII-kod:
32
- Hexadecimal:
20
- URL-kodad:
%20
- ASCII-kod:
-
Tecken:
'é'
- UTF-8-kodning:
0xC3 0xA9
- URL-kodad:
%C3%A9
- UTF-8-kodning:
Kantsituationer att överväga
-
Unicode-tecken: Icke-ASCII-tecken måste kodas i UTF-8 och sedan procentkodas.
-
Redan kodade procenttecken: Procenttecken som är en del av procentkodningar får inte kodas om.
-
Reserverade tecken i frågesträngar: Vissa tecken har speciella betydelser i frågesträngar och bör kodas för att förhindra att strukturen ändras.
URL-avkodning
Vad är URL-avkodning?
URL-avkodning är den omvända processen av URL-kodning. Den konverterar procentkodade tecken tillbaka till sin ursprungliga form, vilket gör URL:en läsbar och tolkbar för människor och system.
Avkodningsprocess
-
Identifiera procentkodningssekvenser: Lokalisera alla
%
-symboler följt av två hexadecimala siffror i URL-strängen. -
Konvertera hexadecimal till byte: Översätt varje hexadecimalt värde till dess motsvarande byte.
-
Avkoda UTF-8-byte (om nödvändigt): För flerbyte-sekvenser, kombinera byte och avkoda dem med hjälp av UTF-8-kodning för att få det ursprungliga tecknet.
-
Ersätt kodade sekvenser: Ersätt de procentkodade sekvenserna med de avkodade tecknen.
Exempel på avkodning
-
Kodad:
hello%20world
%20
översätts till ett mellanslag' '
- Avkodad:
hello world
-
Kodad:
J%C3%BCrgen
%C3%A4
översätts till'ü'
i UTF-8- Avkodad:
Jürgen
Vikten av URL-avkodning
URL-avkodning är avgörande när man bearbetar användarinmatning från URL:er, läser frågeparametrar eller tolkar data som tas emot från webbförfrågningar. Det säkerställer att informationen som extraheras från en URL är i sin rätta, avsedda form.
Användningsfall
Webbutveckling
-
Frågeparametrar: Kodning av användarinmatning i frågeparametrar för att förhindra fel eller säkerhetsrisker.
-
Sökvägsparametrar: Säker inkludering av dynamiska data i URL-sökvägar.
Datatransmission
-
API:er och webbservicer: Säkerställande av att data som skickas till API:er är korrekt formaterade.
-
Internationell anpassning: Stöd för URL:er med tecken från olika språk.
Säkerhet
- Förhindra injektionsattacker: Kodning av inmatningar för att mildra risken för cross-site scripting (XSS) och andra injektionsattacker.
Alternativ
Även om URL-kodning är nödvändig, finns det scenarier där andra kodningsmetoder kan vara mer lämpliga:
-
Base64-kodning: Används för att koda binär data inom URL:er eller när en högre informationsdensitet krävs.
-
UTF-8-kodning utan procentkodning: Vissa system använder UTF-8-kodning direkt, men detta kan leda till problem om det inte hanteras korrekt.
Överväg specifikationerna för din applikation för att välja den mest lämpliga kodningsmetoden.
Historia
URL-kodning introducerades med de tidiga specifikationerna för URL- och URI (Uniform Resource Identifier) standarderna på 1990-talet. Behovet av ett konsekvent sätt att koda specialtecken uppstod från de olika systemen och teckenuppsättningarna som användes världen över.
Nyckelmilstolpar inkluderar:
-
RFC 1738 (1994): Definierade URL:er och introducerade procentkodning.
-
RFC 3986 (2005): Uppdaterade URI-syntaxen, förfinade reglerna för kodning.
Över tid har URL-kodning blivit en integrerad del av webbteknologier, vilket säkerställer pålitlig kommunikation mellan olika system och plattformar.
Kodexempel
Här är exempel på hur man utför URL-kodning i olika programmeringsspråk:
1' Excel VBA Exempel
2Function URLEncode(ByVal Text As String) As String
3 Dim i As Integer
4 Dim CharCode As Integer
5 Dim Char As String
6 Dim EncodedText As String
7
8 For i = 1 To Len(Text)
9 Char = Mid(Text, i, 1)
10 CharCode = AscW(Char)
11 Select Case CharCode
12 Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 ' 0-9, A-Z, a-z, -, ., _, ~
13 EncodedText = EncodedText & Char
14 Case Else
15 If CharCode < 0 Then
16 ' Hantera Unicode-tecken
17 EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
18 Else
19 EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
20 End If
21 End Select
22 Next i
23 URLEncode = EncodedText
24End Function
25
26' Användning:
27' =URLEncode("https://example.com/?name=Jürgen")
28
1% MATLAB Exempel
2function encodedURL = urlEncode(url)
3 import java.net.URLEncoder
4 encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
5end
6
7% Användning:
8% encodedURL = urlEncode('https://example.com/?name=Jürgen');
9
1## Ruby Exempel
2require 'uri'
3
4url = 'https://example.com/path?query=hello world&name=Jürgen'
5encoded_url = URI::DEFAULT_PARSER.escape(url)
6puts encoded_url
7## Utdata: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Rust Exempel
2use url::form_urlencoded;
3
4fn main() {
5 let url = "https://example.com/path?query=hello world&name=Jürgen";
6 let encoded_url = percent_encode(url);
7 println!("{}", encoded_url);
8 // Utdata: https://example.com/path%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
9}
10
11fn percent_encode(input: &str) -> String {
12 use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
13 utf8_percent_encode(input, NON_ALPHANUMERIC).to_string()
14}
15
1## Python Exempel
2import urllib.parse
3
4url = 'https://example.com/path?query=hello world&name=Jürgen'
5encoded_url = urllib.parse.quote(url, safe=':/?&=')
6print(encoded_url)
7## Utdata: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// JavaScript Exempel
2const url = 'https://example.com/path?query=hello world&name=Jürgen';
3const encodedURL = encodeURI(url);
4console.log(encodedURL);
5// Utdata: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
1// Java Exempel
2import java.net.URLEncoder;
3import java.nio.charset.StandardCharsets;
4
5public class URLEncodeExample {
6 public static void main(String[] args) throws Exception {
7 String url = "https://example.com/path?query=hello world&name=Jürgen";
8 String encodedURL = URLEncoder.encode(url, StandardCharsets.UTF_8.toString());
9 // Ersätt "+" med "%20" för mellanslag
10 encodedURL = encodedURL.replace("+", "%20");
11 System.out.println(encodedURL);
12 // Utdata: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
13 }
14}
15
1// C# Exempel
2using System;
3using System.Net;
4
5class Program
6{
7 static void Main()
8 {
9 string url = "https://example.com/path?query=hello world&name=Jürgen";
10 string encodedURL = Uri.EscapeUriString(url);
11 Console.WriteLine(encodedURL);
12 // Utdata: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
13 }
14}
15
1<?php
2// PHP Exempel
3$url = 'https://example.com/path?query=hello world&name=Jürgen';
4$encodedURL = urlencode($url);
5echo $encodedURL;
6// Utdata: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
7?>
8
1// Go Exempel
2package main
3
4import (
5 "fmt"
6 "net/url"
7)
8
9func main() {
10 urlStr := "https://example.com/path?query=hello world&name=Jürgen"
11 encodedURL := url.QueryEscape(urlStr)
12 fmt.Println(encodedURL)
13 // Utdata: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
14}
15
1// Swift Exempel
2import Foundation
3
4let url = "https://example.com/path?query=hello world&name=Jürgen"
5if let encodedURL = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
6 print(encodedURL)
7 // Utdata: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8}
9
1## R Exempel
2url <- "https://example.com/path?query=hello world&name=Jürgen"
3encodedURL <- URLencode(url, reserved = TRUE)
4print(encodedURL)
5## Utdata: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
Obs: Utdata kan variera något beroende på hur varje språk hanterar reserverade tecken och mellanslag (t.ex. kodning av mellanslag som %20
eller +
).
SVG-diagram över URL-kodningsprocessen
Säkerhetsöverväganden
Korrekt URL-kodning och avkodning är avgörande för säkerheten:
-
Förhindra injektionsattacker: Kodning av användarinmatning hjälper till att förhindra att skadlig kod körs, vilket mildrar risker som cross-site scripting (XSS) och SQL-injektion.
-
Data integritet: Säkerställer att data överförs utan förändring eller korruption.
-
Efterlevnad av standarder: Att följa kodningsstandarder undviker interoperabilitetsproblem mellan system.
Referenser
- RFC 3986 - Uniform Resource Identifier (URI): https://tools.ietf.org/html/rfc3986
- Vad är URL-kodning och hur fungerar det? https://www.urlencoder.io/learn/
- Procentkodning: https://en.wikipedia.org/wiki/Percent-encoding
- URL-standard: https://url.spec.whatwg.org/
- URI.escape är föråldrad: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Slutsats
URL-kodning är en väsentlig aspekt av webbutveckling och internetkommunikation. Genom att konvertera specialtecken till ett säkert format säkerställer det att URL:er tolkas korrekt av webbläsare och servrar, vilket upprätthåller integriteten och säkerheten i datatransmission. Detta verktyg ger ett bekvämt sätt att escapera specialtecken i dina URL:er, vilket förbättrar kompatibiliteten och förhindrar potentiella fel eller säkerhetsrisker.
Återkoppling
Klicka på feedback-toasten för att börja ge feedback om detta verktyg