Whiz Tools

URL virknes kodētājs

URL String Escaper Tool

Ievads

Interneta attīstībā un komunikācijās URL (Uniform Resource Locators) spēlē nozīmīgu lomu, identificējot resursus tīmeklī. Tomēr URL ir ierobežojumi attiecībā uz tajos varošo simbolu skaitu. Dažiem simboliem ir īpaša nozīme, bet citi ir nedroši URL lietošanai, jo pastāv iespēja, ka tie tiks nepareizi interpretēti vai sabojāti pārsūtīšanas laikā.

URL kodēšana, kas pazīstama arī kā procentu kodēšana, ir mehānisms, kas paredzēts, lai pārvērstu īpašos simbolus formātā, ko var pārsūtīt pa internetu. Šis rīks ļauj jums ievadīt URL virkni un aizsargāt īpašos simbolus, nodrošinot, ka URL ir derīgs un to var pareizi interpretēt tīmekļa pārlūkprogrammas un serveri.

URL kodēšanas izpratne

Kas ir URL kodēšana?

URL kodēšana ietver nedrošu ASCII simbolu aizstāšanu ar %, kam seko divi heksadecimālie cipari, kas attēlo simbola ASCII kodu. Tas nodrošina, ka informācija tiek pārsūtīta pa internetu bez izmaiņām.

Piemēram, atstarpe simbols ' ' tiek aizstāts ar %20.

Kāpēc ir nepieciešama URL kodēšana?

URL var nosūtīt pa internetu, izmantojot tikai ASCII rakstzīmju kopu. Tā kā URL bieži satur simbolus ārpus šī kopuma, tie jākonvertē derīgā ASCII formātā. URL kodēšana garantē, ka īpašie simboli neradīs nevēlamus efektus vai kļūdas tīmekļa pieprasījumos.

Simboli, kas jākodē

Saskaņā ar RFC 3986 specifikāciju šādi simboli ir rezervēti URL un tiem jābūt procentuāli kodētiem, ja tie tiek izmantoti burtiski:

  • Vispārējie delimitatori: :, /, ?, #, [, ], @
  • Apakšdelimitatori: !, $, &, ', (, ), *, +, ,, ;, =

Turklāt jebkuras ne-ASCII rakstzīmes, tostarp rakstzīmes Unicode, jākodē.

Kā darbojas URL kodēšana?

Kodēšanas process

  1. Identificēt īpašos simbolus: Analizēt URL virkni un identificēt simbolus, kas nav ne rezervētās ASCII rakstzīmes (burti, cipari, -, ., _, ~).

  2. Pārvērst uz ASCII kodu: Katram īpašajam simbolam iegūt tā ASCII vai Unicode kodu punktu.

  3. Pārvērst uz UTF-8 baitiem (ja nepieciešams): Ne-ASCII rakstzīmēm kodēt simbolu vienā vai vairākos baitos, izmantojot UTF-8 kodēšanu.

  4. Pārvērst heksadecimālā: Katru baitu pārvērst tā divciparu heksadecimālajā ekvivalentā.

  5. Pievienot procentu simbolu: Katram heksadecimālā baitam pievienot % simbolu.

Piemērs kodēšanai

  • Simbols: ' ' (atstarpe)

    • ASCII kods: 32
    • Heksadecimālais: 20
    • URL kodēts: %20
  • Simbols: 'é'

    • UTF-8 kodēšana: 0xC3 0xA9
    • URL kodēts: %C3%A9

Malu gadījumi, kas jāņem vērā

  • Unicode rakstzīmes: Ne-ASCII rakstzīmes jākodē UTF-8 un pēc tam procentuāli jākodē.

  • Jau kodēti procentu simboli: Procentu simboli, kas ir daļa no procentu kodējumiem, nedrīkst tikt atkārtoti kodēti.

  • Rezervētie simboli vaicājumu virknes: Daži simboli ir īpašas nozīmes vaicājumu virknes un tiem jābūt kodētiem, lai novērstu struktūras izmaiņas.

URL dekodēšana

Kas ir URL dekodēšana?

URL dekodēšana ir pretējs process URL kodēšanai. Tā pārvērš procentuāli kodētus simbolus atpakaļ to sākotnējā formā, padarot URL lasāmu un interpretējamu cilvēkiem un sistēmām.

Dekodēšanas process

  1. Identificēt procentu kodēšanas secības: Atrast visus % simbolus, kam seko divi heksadecimālie cipari URL virknes.

  2. Pārvērst heksadecimālo uz baitiem: Pārvērst katru heksadecimālo vērtību tās atbilstošajā baitā.

  3. Dekodēt UTF-8 baitus (ja nepieciešams): Apvienot baitus un dekodēt tos, izmantojot UTF-8 kodēšanu, lai iegūtu sākotnējo simbolu.

  4. Aizstāt kodētās secības: Aizstāt procentuāli kodētās secības ar dekodētajiem simboliem.

Piemērs dekodēšanai

  • Kodēts: hello%20world

    • %20 pārvēršas par atstarpi ' '
    • Dekodēts: hello world
  • Kodēts: J%C3%BCrgen

    • %C3%A4 pārvēršas par 'ü' UTF-8
    • Dekodēts: Jürgen

URL dekodēšanas nozīme

URL dekodēšana ir būtiska, apstrādājot lietotāju ievadi no URL, lasot vaicājumu parametrus vai interpretējot datus, kas saņemti no tīmekļa pieprasījumiem. Tā nodrošina, ka informācija, kas iegūta no URL, ir tās pareizajā, paredzētajā formā.

Lietošanas gadījumi

Tīmekļa attīstība

  • Vaicājumu parametri: Kodējot lietotāju ievadi vaicājumu parametros, lai novērstu kļūdas vai drošības ievainojamības.

  • Ceļa parametri: Droši iekļaujot dinamiskos datus URL ceļos.

Datu pārsūtīšana

  • API un tīmekļa pakalpojumi: Nodrošinot, ka uz API nosūtītie dati ir pareizi formatēti.

  • Internacionalizācija: Atbalstot URL ar rakstzīmēm no dažādām valodām.

Drošība

  • Ievainojamību novēršana: Kodējot ievades datus, lai mazinātu risku no skriptu (XSS) un citu ievainojamību uzbrukumiem.

Alternatīvas

Lai gan URL kodēšana ir būtiska, ir scenāriji, kad citas kodēšanas metodes var būt piemērotākas:

  • Base64 kodēšana: Izmanto, lai kodētu bināros datus URL ietvaros vai kad nepieciešama augstāka informācijas blīvuma pakāpe.

  • UTF-8 kodēšana bez procentu kodēšanas: Dažas sistēmas izmanto tieši UTF-8 kodēšanu, bet tas var radīt problēmas, ja to pareizi neapstrādā.

Apsveriet jūsu lietojumprogrammas specifiku, lai izvēlētos vispiemērotāko kodēšanas metodi.

Vēsture

URL kodēšana tika ieviesta ar agrīnajām URL un URI (Uniform Resource Identifier) standartiem 1990. gados. Nepieciešamība pēc konsekventas īpašo simbolu kodēšanas radās no dažādām sistēmām un rakstzīmju kopām, kas tika izmantotas visā pasaulē.

Galvenie notikumi ietver:

  • RFC 1738 (1994): Definēja URL un ieviesa procentu kodēšanu.

  • RFC 3986 (2005): Atjaunināja URI sintaksi, precizējot kodēšanas noteikumus.

Laika gaitā URL kodēšana ir kļuvusi par neatņemamu tīmekļa tehnoloģiju sastāvdaļu, nodrošinot uzticamu saziņu starp dažādām sistēmām un platformām.

Koda piemēri

Šeit ir piemēri, kā veikt URL kodēšanu dažādās programmēšanas valodās:

' Excel VBA piemērs
Function URLEncode(ByVal Text As String) As String
    Dim i As Integer
    Dim CharCode As Integer
    Dim Char As String
    Dim EncodedText As String

    For i = 1 To Len(Text)
        Char = Mid(Text, i, 1)
        CharCode = AscW(Char)
        Select Case CharCode
            Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 ' 0-9, A-Z, a-z, -, ., _, ~
                EncodedText = EncodedText & Char
            Case Else
                If CharCode < 0 Then
                    ' Apstrādāt Unicode rakstzīmes
                    EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
                Else
                    EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
                End If
        End Select
    Next i
    URLEncode = EncodedText
End Function

' Lietošana:
' =URLEncode("https://example.com/?name=Jürgen")
% MATLAB piemērs
function encodedURL = urlEncode(url)
    import java.net.URLEncoder
    encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
end

% Lietošana:
% encodedURL = urlEncode('https://example.com/?name=Jürgen');
## Ruby piemērs
require 'uri'

url = 'https://example.com/path?query=hello world&name=Jürgen'
encoded_url = URI::DEFAULT_PARSER.escape(url)
puts encoded_url
## Izvade: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// Rust piemērs
use url::form_urlencoded;

fn main() {
    let url = "https://example.com/path?query=hello world&name=Jürgen";
    let encoded_url = percent_encode(url);
    println!("{}", encoded_url);
    // Izvade: https://example.com/path%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
}

fn percent_encode(input: &str) -> String {
    use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
    utf8_percent_encode(input, NON_ALPHANUMERIC).to_string()
}
## Python piemērs
import urllib.parse

url = 'https://example.com/path?query=hello world&name=Jürgen'
encoded_url = urllib.parse.quote(url, safe=':/?&=')
print(encoded_url)
## Izvade: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// JavaScript piemērs
const url = 'https://example.com/path?query=hello world&name=Jürgen';
const encodedURL = encodeURI(url);
console.log(encodedURL);
// Izvade: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// Java piemērs
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class URLEncodeExample {
    public static void main(String[] args) throws Exception {
        String url = "https://example.com/path?query=hello world&name=Jürgen";
        String encodedURL = URLEncoder.encode(url, StandardCharsets.UTF_8.toString());
        // Aizstāt "+" ar "%20" atstarpēm
        encodedURL = encodedURL.replace("+", "%20");
        System.out.println(encodedURL);
        // Izvade: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
    }
}
// C# piemērs
using System;
using System.Net;

class Program
{
    static void Main()
    {
        string url = "https://example.com/path?query=hello world&name=Jürgen";
        string encodedURL = Uri.EscapeUriString(url);
        Console.WriteLine(encodedURL);
        // Izvade: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
    }
}
<?php
// PHP piemērs
$url = 'https://example.com/path?query=hello world&name=Jürgen';
$encodedURL = urlencode($url);
echo $encodedURL;
// Izvade: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
?>
// Go piemērs
package main

import (
    "fmt"
    "net/url"
)

func main() {
    urlStr := "https://example.com/path?query=hello world&name=Jürgen"
    encodedURL := url.QueryEscape(urlStr)
    fmt.Println(encodedURL)
    // Izvade: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
}
// Swift piemērs
import Foundation

let url = "https://example.com/path?query=hello world&name=Jürgen"
if let encodedURL = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
    print(encodedURL)
    // Izvade: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
}
## R piemērs
url <- "https://example.com/path?query=hello world&name=Jürgen"
encodedURL <- URLencode(url, reserved = TRUE)
print(encodedURL)
## Izvade: https://example.com/path?query=hello%20world&name=J%C3%BCrgen

Piezīme: Izvade var nedaudz atšķirties atkarībā no tā, kā katra valoda apstrādā rezervētos simbolus un atstarpes (piemēram, kodējot atstarpes kā %20 vai +).

SVG diagramma par URL kodēšanas procesu

URL kodēšanas process Oriģinālais URL Identificēt īpašos simbolus Kodēt URL Piemērs: Ievade: https://example.com/über uns Izvade: https://example.com/%C3%BCber%20uns

Drošības apsvērumi

Pareiza URL kodēšana un dekodēšana ir kritiska drošībai:

  • Ievainojamību novēršana: Kodējot lietotāju ievadi, palīdz novērst ļaunprātīgas koda izpildi, mazinot riskus, piemēram, skriptu (XSS) un SQL injekciju.

  • Datu integritāte: Nodrošina, ka dati tiek pārsūtīti bez izmaiņām vai bojājumiem.

  • Atbilstība standartiem: Ievērojot kodēšanas standartus, tiek novērstas savietojamības problēmas starp sistēmām.

Atsauces

  1. RFC 3986 - Uniform Resource Identifier (URI): https://tools.ietf.org/html/rfc3986
  2. Kas ir URL kodēšana un kā tā darbojas? https://www.urlencoder.io/learn/
  3. Procentu kodēšana: https://en.wikipedia.org/wiki/Percent-encoding
  4. URL standarts: https://url.spec.whatwg.org/
  5. URI.escape ir novecojusi: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated

Secinājums

URL kodēšana ir būtiska tīmekļa attīstības un interneta komunikāciju sastāvdaļa. Pārvēršot īpašos simbolus drošā formātā, tā nodrošina, ka URL tiek pareizi interpretēti pārlūkprogrammās un serveros, saglabājot datu pārsūtīšanas integritāti un drošību. Šis rīks nodrošina ērtu veidu, kā aizsargāt īpašos simbolus jūsu URL, uzlabojot saderību un novēršot potenciālas kļūdas vai drošības ievainojamības.

Atsauksmes