Онлайн инструмент за ескейпване на специални символи в URL низ. Въведете URL, а този инструмент ще го кодира, като ескейпва специалните символи, осигурявайки безопасността му за използване в уеб приложения.
В сферата на уеб разработката и интернет комуникациите, URL адресите (Uniform Resource Locators) играят решаваща роля в идентифицирането на ресурси в мрежата. Въпреки това, URL адресите имат ограничения относно символите, които могат да съдържат. Някои символи имат специални значения, докато други са небезопасни за употреба в URL адреси поради възможността за неправилно тълкуване или корупция по време на предаване.
Кодирането на URL, известно също като процентно кодиране, е механизъм за преобразуване на специални символи в формат, който може да бъде предаван през интернет. Този инструмент ви позволява да въведете URL низ и да ескейпнете специалните символи, осигурявайки, че URL адресът е валиден и може да бъде интерпретиран правилно от уеб браузъри и сървъри.
Кодирането на URL включва замяна на небезопасни ASCII символи с %
, последвано от два шестнадесетични знака, представляващи ASCII кода на символа. То гарантира, че информацията се предава през интернет без изменения.
Например, символът за интервал ' '
се заменя с %20
.
URL адресите могат да бъдат изпращани през интернет, използвайки само ASCII символи. Тъй като URL адресите често съдържат символи извън този набор, те трябва да бъдат преобразувани в валиден ASCII формат. Кодирането на URL гарантира, че специалните символи не причиняват непредвидени ефекти или грешки в уеб заявките.
Според спецификацията RFC 3986, следните символи са резервирани в URL адресите и трябва да бъдат процентно кодирани, ако ще се използват буквално:
:
, /
, ?
, #
, [
, ]
, @
!
, $
, &
, '
, (
, )
, *
, +
, ,
, ;
, =
Освен това, всякакви не-ASCII символи, включително символи от Unicode, трябва да бъдат кодирани.
Идентифициране на специални символи:
Парснете URL низ и идентифицирайте символите, които не са неразрешени ASCII символи (букви, цифри, -
, .
, _
, ~
).
Конвертиране в ASCII код: За всеки специален символ, получете неговата ASCII или Unicode кодова точка.
Конвертиране в UTF-8 байтова последователност (ако е необходимо): За не-ASCII символи, кодирайте символа в един или повече байта, използвайки UTF-8 кодиране.
Конвертиране в шестнадесетичен формат: Преобразувайте всеки байт в неговия двуцифрен шестнадесетичен еквивалент.
Добавяне на символа процент:
Поставете всеки шестнадесетичен байт пред символ %
.
Символ: ' '
(интервал)
32
20
%20
Символ: 'é'
0xC3 0xA9
%C3%A9
Unicode символи: Не-ASCII символите трябва да бъдат кодирани в UTF-8 и след това процентно кодирани.
Вече кодирани процентни знаци: Процентните знаци, които са част от процентните кодировки, не трябва да бъдат повторно кодирани.
Резервирани символи в заявки: Някои символи имат специални значения в заявките и трябва да бъдат кодирани, за да се предотврати нарушаване на структурата.
Декодирането на URL е обратният процес на кодирането на URL. То преобразува процентно кодирани символи обратно в оригиналната им форма, правейки URL адреса четим и интерпретируем от хора и системи.
Идентифициране на процентно кодирани последователности:
Намерете всички %
символи, последвани от два шестнадесетични знака в URL низа.
Конвертиране на шестнадесетичен формат в байтове: Преведете всяка шестнадесетична стойност в съответстващия байт.
Декодиране на UTF-8 байтове (ако е необходимо): За многобайтови последователности, комбинирайте байтовете и ги декодирайте, използвайки UTF-8 кодиране, за да получите оригиналния символ.
Замяна на кодирани последователности: Заместете процентно кодирани последователности с декодираните символи.
Кодирано: hello%20world
%20
се превежда на интервал ' '
hello world
Кодирано: J%C3%BCrgen
%C3%A4
се превежда на 'ü'
в UTF-8Jürgen
Декодирането на URL е от съществено значение при обработка на потребителски вход от URL адреси, четене на параметри на заявки или интерпретиране на данни, получени от уеб заявки. То гарантира, че информацията, извлечена от URL адреса, е в правилната, предвидена форма.
Параметри на заявки: Кодиране на потребителски вход в параметри на заявки, за да се предотвратят грешки или уязвимости в сигурността.
Параметри на пътища: Безопасно включване на динамични данни в URL пътища.
API и уеб услуги: Осигуряване на правилно форматирани данни, изпратени до API.
Интернационализация: Подкрепа на URL адреси с символи от различни езици.
Докато кодирането на URL е от съществено значение, има сценарии, в които други методи на кодиране могат да бъдат по-подходящи:
Base64 кодиране: Използва се за кодиране на бинарни данни в URL адреси или когато е необходима по-висока плътност на информацията.
UTF-8 кодиране без процентно кодиране: Някои системи използват директно UTF-8 кодиране, но това може да доведе до проблеми, ако не е обработено правилно.
Обмислете спецификите на вашето приложение, за да изберете най-подходящия метод на кодиране.
Кодирането на URL беше въведено с ранните спецификации на стандартите за URL и URI (Uniform Resource Identifier) през 90-те години. Необходимостта от последователен начин за кодиране на специални символи възникна от разнообразните системи и набори от символи, използвани по целия свят.
Ключови етапи включват:
RFC 1738 (1994): Определя URL адресите и въвежда процентното кодиране.
RFC 3986 (2005): Актуализира синтаксиса на URI, уточнявайки правилата за кодиране.
С времето, кодирането на URL стана неразривна част от уеб технологиите, осигурявайки надеждна комуникация между различни системи и платформи.
Ето примери за това как да извършите кодирането на URL в различни програмни езици:
1' Пример на Excel VBA
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 ' Обработка на Unicode символи
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' Използване:
27' =URLEncode("https://example.com/?name=Jürgen")
28
1% Пример на MATLAB
2function encodedURL = urlEncode(url)
3 import java.net.URLEncoder
4 encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
5end
6
7% Използване:
8% encodedURL = urlEncode('https://example.com/?name=Jürgen');
9
1## Пример на Ruby
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## Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Пример на Rust
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 // Изход: 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
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## Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Пример на JavaScript
2const url = 'https://example.com/path?query=hello world&name=Jürgen';
3const encodedURL = encodeURI(url);
4console.log(encodedURL);
5// Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
1// Пример на Java
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 // Замяна на "+" с "%20" за интервали
10 encodedURL = encodedURL.replace("+", "%20");
11 System.out.println(encodedURL);
12 // Изход: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
13 }
14}
15
1// Пример на C#
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 // Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
13 }
14}
15
1<?php
2// Пример на PHP
3$url = 'https://example.com/path?query=hello world&name=Jürgen';
4$encodedURL = urlencode($url);
5echo $encodedURL;
6// Изход: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
7?>
8
1// Пример на Go
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 // Изход: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
14}
15
1// Пример на Swift
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 // Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8}
9
1## Пример на R
2url <- "https://example.com/path?query=hello world&name=Jürgen"
3encodedURL <- URLencode(url, reserved = TRUE)
4print(encodedURL)
5## Изход: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
Забележка: Изходът може да варира леко в зависимост от начина, по който всеки език обработва резервираните символи и интервалите (например, кодиране на интервали като %20
или +
).
Правилното кодиране и декодиране на URL адреси е критично за сигурността:
Предотвратяване на инжекционни атаки: Кодиране на потребителски вход помага да се предотврати изпълнението на злонамерен код, намалявайки рисковете от междусайтово скриптиране (XSS) и SQL инжекции.
Цялост на данните: Гарантира, че данните се предават без изменения или корупция.
Съответствие със стандартите: Спазването на стандартите за кодиране избягва проблеми с интероперативността между системите.
Кодирането на URL е основен аспект на уеб разработката и интернет комуникациите. Чрез преобразуването на специални символи в безопасен формат, то гарантира, че URL адресите се интерпретират правилно от браузърите и сървърите, поддържайки целостта и сигурността на предаването на данни. Този инструмент предоставя удобен начин за ескейпване на специални символи в URL адресите ви, подобрявайки съвместимостта и предотвратявайки потенциални грешки или уязвимости в сигурността.