Online alat za kodiranje posebnih znakova u URL stringu. Unesite URL, a ovaj alat će ga kodirati tako da će posebni znakovi biti zamijenjeni, osiguravajući da je siguran za korištenje u web aplikacijama.
U području web razvoja i internetskih komunikacija, URL-ovi (Uniform Resource Locators) igraju ključnu ulogu u identifikaciji resursa na webu. Međutim, URL-ovi imaju ograničenja u pogledu znakova koje mogu sadržavati. Određeni znakovi imaju posebna značenja, dok su drugi nesigurni za upotrebu u URL-ovima zbog mogućnosti pogrešne interpretacije ili korupcije tijekom prijenosa.
Kodiranje URL-a, poznato i kao percent-encoding, mehanizam je za pretvaranje posebnih znakova u format koji se može prenijeti putem Interneta. Ovaj alat vam omogućuje da unesete URL niz i escapirate posebne znakove, osiguravajući da URL bude valjan i da ga web preglednici i poslužitelji ispravno interpretiraju.
Kodiranje URL-a uključuje zamjenu nesigurnih ASCII znakova s %
praćenim s dva heksadecimalna znamenka koja predstavljaju ASCII kod tog znaka. Osigurava da se informacije prenose putem Interneta bez promjena.
Na primjer, znak razmaka ' '
zamjenjuje se s %20
.
URL-ovi se mogu slati putem Interneta koristeći samo ASCII skup znakova. Budući da URL-ovi često sadrže znakove izvan ovog skupa, moraju se pretvoriti u valjani ASCII format. Kodiranje URL-a jamči da posebni znakovi ne uzrokuju neželjene efekte ili greške u web zahtjevima.
Prema RFC 3986 specifikaciji, sljedeći znakovi su rezervirani u URL-ovima i moraju biti percent-encoded ako se koriste doslovno:
:
, /
, ?
, #
, [
, ]
, @
!
, $
, &
, '
, (
, )
, *
, +
, ,
, ;
, =
Osim toga, svi ne-ASCII znakovi, uključujući znakove u Unicode-u, moraju biti kodirani.
Identificirajte Posebne Znakove:
Parsirajte URL niz i identificirajte znakove koji nisu ne rezervirani ASCII znakovi (slova, brojevi, -
, .
, _
, ~
).
Pretvorite u ASCII Kod: Za svaki posebni znak, dobijte njegov ASCII ili Unicode kod.
Pretvorite u UTF-8 Bajt Sekvencu (ako je potrebno): Za ne-ASCII znakove, kodirajte znak u jedan ili više bajtova koristeći UTF-8 kodiranje.
Pretvorite u Heksadecimalni: Pretvorite svaki bajt u njegov heksadecimalni ekvivalent od dva znamenka.
Dodajte Postotak Simbol:
Precedite svaki heksadecimalni bajt s %
znakom.
Znak: ' '
(Razmak)
32
20
%20
Znak: 'é'
0xC3 0xA9
%C3%A9
Unicode Znakovi: Ne-ASCII znakovi moraju biti kodirani u UTF-8 i zatim percent-encoded.
Već Kodirani Postotni Simboli: Postotni simboli koji su dio percent-encoding ne smiju se ponovo kodirati.
Rezervirani Znakovi u Upitnim Nizovima: Određeni znakovi imaju posebna značenja u upitnim nizovima i trebaju biti kodirani kako bi se spriječilo izmjenjivanje strukture.
Dekodiranje URL-a je obrnuti proces kodiranja URL-a. Pretvara percent-encoded znakove natrag u njihov izvorni oblik, čineći URL čitljivim i interpretabilnim za ljude i sustave.
Identificirajte Postotne Kodirane Sekvence:
Pronađite sve %
simbole praćene s dva heksadecimalna znamenka u URL nizu.
Pretvorite Heksadecimalno u Bajtove: Prevedite svaku heksadecimalnu vrijednost u njen odgovarajući bajt.
Dekodirajte UTF-8 Bajtove (ako je potrebno): Za višebajtne sekvence, spojite bajtove i dekodirajte ih koristeći UTF-8 kodiranje kako biste dobili izvorni znak.
Zamijenite Kodirane Sekvence: Zamijenite percent-encoded sekvence s dekodiranim znakovima.
Kodirano: hello%20world
%20
prevodi se u razmak ' '
hello world
Kodirano: J%C3%BCrgen
%C3%A4
prevodi se u 'ü'
u UTF-8Jürgen
Dekodiranje URL-a je ključno prilikom obrade korisničkog unosa iz URL-ova, čitanja upitnih parametara ili interpretacije podataka primljenih iz web zahtjeva. Osigurava da su informacije izvučene iz URL-a u svom ispravnom, namijenjenom obliku.
Upitni Parametri: Kodiranje korisničkog unosa u upitnim parametrima kako bi se spriječile greške ili sigurnosne ranjivosti.
Putni Parametri: Sigurno uključivanje dinamičkih podataka u URL putanjama.
API-ji i Web Servisi: Osiguravanje da su podaci poslani API-ima ispravno formatirani.
Internacionalizacija: Podrška URL-ovima s znakovima iz raznih jezika.
Iako je kodiranje URL-a neophodno, postoje situacije u kojima bi druge metode kodiranja mogle biti prikladnije:
Base64 Kodiranje: Koristi se za kodiranje binarnih podataka unutar URL-ova ili kada je potrebna veća gustoća informacija.
UTF-8 Kodiranje bez Percent-Encoding: Neki sustavi koriste UTF-8 kodiranje izravno, ali to može dovesti do problema ako se ne obrađuje ispravno.
Razmotrite specifičnosti vaše aplikacije kako biste odabrali najprikladniju metodu kodiranja.
Kodiranje URL-a uvedeno je s ranim specifikacijama URL-a i URI (Uniform Resource Identifier) standarda 1990-ih. Potreba za dosljednim načinom kodiranja posebnih znakova proizašla je iz raznolikih sustava i skupova znakova koji se koriste širom svijeta.
Ključne prekretnice uključuju:
RFC 1738 (1994): Definira URL-ove i uvodi percent-encoding.
RFC 3986 (2005): Ažurira URI sintaksu, usavršavajući pravila za kodiranje.
S vremenom, kodiranje URL-a postalo je sastavni dio web tehnologija, osiguravajući pouzdanu komunikaciju između različitih sustava i platformi.
Evo primjera kako izvršiti kodiranje URL-a u raznim programskim jezicima:
1' Excel VBA Primjer
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 ' Obrada Unicode znakova
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' Upotreba:
27' =URLEncode("https://example.com/?name=Jürgen")
28
1% MATLAB Primjer
2function encodedURL = urlEncode(url)
3 import java.net.URLEncoder
4 encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
5end
6
7% Upotreba:
8% encodedURL = urlEncode('https://example.com/?name=Jürgen');
9
1## Ruby Primjer
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## Ispis: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Rust Primjer
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 // Ispis: 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 Primjer
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## Ispis: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// JavaScript Primjer
2const url = 'https://example.com/path?query=hello world&name=Jürgen';
3const encodedURL = encodeURI(url);
4console.log(encodedURL);
5// Ispis: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
1// Java Primjer
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 // Zamijenite "+" s "%20" za razmake
10 encodedURL = encodedURL.replace("+", "%20");
11 System.out.println(encodedURL);
12 // Ispis: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
13 }
14}
15
1// C# Primjer
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 // Ispis: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
13 }
14}
15
1<?php
2// PHP Primjer
3$url = 'https://example.com/path?query=hello world&name=Jürgen';
4$encodedURL = urlencode($url);
5echo $encodedURL;
6// Ispis: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
7?>
8
1// Go Primjer
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 // Ispis: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
14}
15
1// Swift Primjer
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 // Ispis: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8}
9
1## R Primjer
2url <- "https://example.com/path?query=hello world&name=Jürgen"
3encodedURL <- URLencode(url, reserved = TRUE)
4print(encodedURL)
5## Ispis: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
Napomena: Ispis se može malo razlikovati ovisno o tome kako svaki jezik obrađuje rezervirane znakove i razmake (npr., kodiranje razmaka kao %20
ili +
).
Ispravno kodiranje i dekodiranje URL-a su kritični za sigurnost:
Sprječavanje Napada Injekcijom: Kodiranje korisničkog unosa pomaže u sprječavanju izvršavanja zloćudnog koda, smanjujući rizike poput cross-site scripting (XSS) i SQL injekcija.
Integritet Podataka: Osigurava da se podaci prenose bez promjena ili korupcije.
Usaglašenost sa Standardima: Poštivanje kodirajućih standarda izbjegava probleme s interoperabilnošću između sustava.
Kodiranje URL-a je bitan aspekt web razvoja i internetskih komunikacija. Pretvaranjem posebnih znakova u siguran format, osigurava da URL-ovi budu ispravno interpretirani od strane preglednika i poslužitelja, održavajući integritet i sigurnost prijenosa podataka. Ovaj alat pruža praktičan način za escapiranje posebnih znakova u vašim URL-ovima, poboljšavajući kompatibilnost i sprječavajući potencijalne greške ili sigurnosne ranjivosti.