Veebitööriist, mis aitab erimärke URL-i stringis escape'ida. Sisestage URL ja see tööriist kodeerib selle, escape'ides erimärgid, tagades, et see on veebirakendustes kasutamiseks ohutu.
Veebiarenduse ja Interneti suhtluse valdkonnas mängivad URL-id (Uniform Resource Locators) olulist rolli veebis ressursside tuvastamisel. Siiski on URL-idel piirangud nende sisaldatavate märkide osas. Teatud märgid omavad erilisi tähendusi, samas kui teised on URL-ides kasutamiseks ohtlikud, kuna need võivad edastamise käigus valesti tõlgendada või rikutud saada.
URL-i kodeerimine, tuntud ka kui protsendi kodeerimine, on mehhanism, mis muundab erimärgid formaati, mida saab Internetis edastada. See tööriist võimaldab teil sisestada URL-i stringi ja põgeneda erimärkide eest, tagades, et URL on kehtiv ja seda tõlgendatakse õigesti veebibrauserite ja serverite poolt.
URL-i kodeerimine hõlmab ohutute ASCII märkide asendamist %
järgnevate kahe kuueteistkümnendiku numbriga, mis esindab märgi ASCII koodi. See tagab, et teave edastatakse Internetis muutumatuna.
Näiteks, tühik märk ' '
asendatakse %20
.
URL-e saab Internetis edastada ainult ASCII märgistikuga. Kuna URL-id sisaldavad sageli märke, mis jäävad sellest komplektist välja, peavad need olema muudetud kehtivaks ASCII formaadiks. URL-i kodeerimine tagab, et erimärgid ei põhjusta soovimatuid efekte või vigu veebipäringutes.
Vastavalt RFC 3986 spetsifikatsioonile peavad järgmised märgid olema URL-ides reservitud ja neid tuleb protsendi kodeerimisega asendada, kui neid soovitakse kasutada sõnaselgelt:
:
, /
, ?
, #
, [
, ]
, @
!
, $
, &
, '
, (
, )
, *
, +
, ,
, ;
, =
Lisaks tuleb kodeerida kõik mitte-ASCII märgid, sealhulgas Unicode'i märke.
Tuvasta erimärgid:
Analüüsi URL-i stringi ja tuvastage märgid, mis ei ole mitte-reservitud ASCII märgid (tähed, numbrid, -
, .
, _
, ~
).
Muuda ASCII koodiks: Iga erimärgi jaoks hankige selle ASCII või Unicode koodipunkt.
Muuda UTF-8 baitide järjestuseks (kui vajalik): Mitte-ASCII märkide jaoks kodeerige märk ühte või mitmesse bitti, kasutades UTF-8 kodeerimist.
Muuda kuueteistkümnendikuks: Muutke iga bitti selle kahe-kümne kuueteistkümnendiku vastavuseks.
Eelnege protsendi sümboliga:
Eelnege iga kuueteistkümnendiku bait %
märgiga.
Märk: ' '
(Tühik)
32
20
%20
Märk: 'é'
0xC3 0xA9
%C3%A9
Unicode märgid: Mitte-ASCII märgid peavad olema kodeeritud UTF-8-s ja seejärel protsendi kodeeritud.
Juba kodeeritud protsendi märgid: Protsendi märgid, mis on osa protsendi kodeeringutest, ei tohi uuesti kodeerida.
Reservitud märgid päringute stringides: Teatud märgid omavad päringute stringides erilisi tähendusi ja neid tuleks kodeerida, et vältida struktuuri muutmist.
URL-i dekodeerimine on URL-i kodeerimise vastupidine protsess. See muundab protsendi kodeeritud märgid tagasi nende algsesse vormi, muutes URL-i loetavaks ja tõlgendatavaks inimestele ja süsteemidele.
Tuvasta protsendi kodeerimise järjestused:
Otsi kõiki %
sümboleid, millele järgneb kaks kuueteistkümnendikku URL-i stringis.
Muuda kuueteistkümendikud baitideks: Tõlgi iga kuueteistkümnendiku väärtus vastavaks baitideks.
Dekodeeri UTF-8 baitideks (kui vajalik): Mitme baiti järjestuste jaoks ühenda bitid ja dekodeeri need UTF-8 kodeerimisega, et saada algne märk.
Asenda kodeeritud järjestused: Asenda protsendi kodeeritud järjestused dekodeeritud märkidega.
Kodeeritud: hello%20world
%20
tõlgitakse tühikuks ' '
hello world
Kodeeritud: J%C3%BCrgen
%C3%A4
tõlgitakse 'ü'
UTF-8-sJürgen
URL-i dekodeerimine on hädavajalik, kui töödeldakse kasutaja sisendit URL-idest, loetakse päringute parameetreid või tõlgendatakse andmeid, mis saadakse veebipäringutest. See tagab, et URL-ist saadud teave on oma õiges, kavandatud vormis.
Päringute parameetrid: Kasutaja sisendi kodeerimine päringute parameetrites, et vältida vigu või turvaprobleeme.
Teepäringud: Dynaamilise andmete ohutu lisamine URL-i teedesse.
API-d ja veebiteenused: Tagamaks, et API-dele saadetud andmed on korralikult vormindatud.
Rahvusvaheline kasutamine: Toetades URL-e, mis sisaldavad erinevate keelte märke.
Kuigi URL-i kodeerimine on hädavajalik, on olukordi, kus muud kodeerimismeetodid võivad olla sobivamad:
Base64 kodeerimine: Kasutatakse binaarsete andmete kodeerimiseks URL-ides või kui on vajalik suurem teabe tihedus.
UTF-8 kodeerimine ilma protsendi kodeerimiseta: Mõned süsteemid kasutavad otse UTF-8 kodeerimist, kuid see võib põhjustada probleeme, kui seda ei käsitleta õigesti.
Kaaluda tuleks teie rakenduse spetsiifikat, et valida kõige sobivam kodeerimismeetod.
URL-i kodeerimine tutvustati URL-i ja URI (Uniform Resource Identifier) standardite varajastes spetsifikatsioonides 1990. aastatel. Ühtse viisi loomise vajadus erimärkide kodeerimiseks tekkis mitmekesiste süsteemide ja maailmas kasutatavate märgistikute tõttu.
Olulised verstapostid hõlmavad:
RFC 1738 (1994): Määratles URL-id ja tutvustas protsendi kodeerimist.
RFC 3986 (2005): Uuendas URI süntaksit, täpsustades kodeerimise reegleid.
Aja jooksul on URL-i kodeerimisest saanud veebitehnoloogiate lahutamatu osa, tagades usaldusväärse suhtluse erinevate süsteemide ja platvormide vahel.
Siin on näited, kuidas URL-i kodeerimist teostada erinevates programmeerimiskeeltes:
1' Excel VBA näide
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 ' Käsitle Unicode märke
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' Kasutamine:
27' =URLEncode("https://example.com/?name=Jürgen")
28
1% MATLAB näide
2function encodedURL = urlEncode(url)
3 import java.net.URLEncoder
4 encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
5end
6
7% Kasutamine:
8% encodedURL = urlEncode('https://example.com/?name=Jürgen');
9
1## Ruby näide
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## Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Rust näide
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 // Väljund: 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 näide
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## Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// JavaScript näide
2const url = 'https://example.com/path?query=hello world&name=Jürgen';
3const encodedURL = encodeURI(url);
4console.log(encodedURL);
5// Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
1// Java näide
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 // Asenda "+" "%20" tühikutega
10 encodedURL = encodedURL.replace("+", "%20");
11 System.out.println(encodedURL);
12 // Väljund: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
13 }
14}
15
1// C# näide
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 // Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
13 }
14}
15
1<?php
2// PHP näide
3$url = 'https://example.com/path?query=hello world&name=Jürgen';
4$encodedURL = urlencode($url);
5echo $encodedURL;
6// Väljund: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
7?>
8
1// Go näide
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 // Väljund: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
14}
15
1// Swift näide
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 // Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8}
9
1## R näide
2url <- "https://example.com/path?query=hello world&name=Jürgen"
3encodedURL <- URLencode(url, reserved = TRUE)
4print(encodedURL)
5## Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
Märkus: Väljund võib veidi varieeruda sõltuvalt sellest, kuidas iga keel käsitleb reservitud märke ja tühikuid (nt, kodeerides tühikuid kui %20
või +
).
Korralik URL-i kodeerimine ja dekodeerimine on kriitilise tähtsusega turvalisuse tagamiseks:
Rünnakute vältimine: Kasutaja sisendi kodeerimine aitab vältida pahatahtliku koodi täitmist, vähendades riske nagu rist-saidirünnakud (XSS) ja SQL süstimine.
Andmete terviklikkus: Tagab, et andmeid edastatakse muutumatuna või rikutud.
Standarditega vastavus: Kodeerimisstandardite järgimine väldib süsteemide vahelisi ühilduvusprobleeme.
URL-i kodeerimine on veebiarenduse ja Interneti suhtluse oluline aspekt. Muundades erimärgid ohutuks formaadiks, tagab see, et URL-e tõlgendatakse õigesti brauserite ja serverite poolt, säilitades andmete edastamise terviklikkuse ja turvalisuse. See tööriist pakub mugavat viisi erimärkide põgenemiseks URL-ides, suurendades ühilduvust ja vältides võimalikke vigu või turvaprobleeme.