Инструмент для экранирования строк URL и специальных символов
Онлайн инструмент для экранирования специальных символов в строке URL. Введите URL, и этот инструмент закодирует его, экранируя специальные символы, обеспечивая его безопасность для использования в веб-приложениях.
Энкодер URL-строк
Документация
Инструмент экранирования строк URL
Введение
В области веб-разработки и интернет-коммуникаций URL (Унифицированные Указатели Ресурсов) играют ключевую роль в идентификации ресурсов в сети. Однако у URL есть ограничения на символы, которые они могут содержать. Некоторые символы имеют специальное значение, в то время как другие небезопасны для использования в URL из-за возможности неправильной интерпретации или повреждения во время передачи.
Кодирование URL, также известное как процентное кодирование, является механизмом преобразования специальных символов в формат, который может быть передан через Интернет. Этот инструмент позволяет вам вводить строку URL и экранировать специальные символы, гарантируя, что URL действителен и может быть правильно интерпретирован веб-браузерами и серверами.
Понимание кодирования URL
Что такое кодирование URL?
Кодирование URL включает замену небезопасных ASCII символов на %
, за которым следуют две шестнадцатеричные цифры, представляющие код ASCII символа. Это гарантирует, что информация передается по Интернету без изменений.
Например, символ пробела ' '
заменяется на %20
.
Почему кодирование URL необходимо?
URL могут быть отправлены по Интернету только с использованием набора символов ASCII. Поскольку URL часто содержат символы за пределами этого набора, их необходимо преобразовать в действительный ASCII формат. Кодирование URL гарантирует, что специальные символы не вызовут непредвиденных эффектов или ошибок в веб-запросах.
Символы, которые нужно кодировать
Согласно спецификации RFC 3986, следующие символы зарезервированы в URL и должны быть процентно закодированы, если они используются буквально:
- Общие разделители:
:
,/
,?
,#
,[
,]
,@
- Подразделители:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
Кроме того, любые не ASCII символы, включая символы в Unicode, должны быть закодированы.
Как работает кодирование URL?
Процесс кодирования
-
Идентификация специальных символов: Проанализируйте строку URL и определите символы, которые не являются не зарезервированными ASCII символами (буквы, цифры,
-
,.
,_
,~
). -
Преобразование в код ASCII: Для каждого специального символа получите его код ASCII или кодовую точку Unicode.
-
Преобразование в байтовую последовательность UTF-8 (если необходимо): Для не ASCII символов закодируйте символ в один или несколько байтов, используя кодировку UTF-8.
-
Преобразование в шестнадцатеричное: Преобразуйте каждый байт в его двузначный шестнадцатеричный эквивалент.
-
Добавление символа процента: Предшествуйте каждому шестнадцатеричному байту символом
%
.
Пример кодирования
-
Символ:
' '
(Пробел)- Код ASCII:
32
- Шестнадцатеричный:
20
- Закодированный URL:
%20
- Код ASCII:
-
Символ:
'é'
- Кодировка UTF-8:
0xC3 0xA9
- Закодированный URL:
%C3%A9
- Кодировка UTF-8:
Учитываемые крайние случаи
-
Символы Unicode: Не ASCII символы должны быть закодированы в UTF-8, а затем процентно закодированы.
-
Уже закодированные символы процента: Символы процента, которые являются частью процентных кодов, не должны быть повторно закодированы.
-
Зарезервированные символы в строках запроса: Некоторые символы имеют специальное значение в строках запроса и должны быть закодированы, чтобы предотвратить изменение структуры.
Декодирование URL
Что такое декодирование URL?
Декодирование URL — это обратный процесс кодирования URL. Оно преобразует процентно закодированные символы обратно в их исходную форму, делая URL читаемым и интерпретируемым людьми и системами.
Процесс декодирования
-
Идентификация последовательностей процентного кодирования: Найдите все символы
%
, за которыми следуют две шестнадцатеричные цифры в строке URL. -
Преобразование шестнадцатеричного в байты: Переведите каждое шестнадцатеричное значение в его соответствующий байт.
-
Декодирование байтов UTF-8 (если необходимо): Для многобайтовых последовательностей объедините байты и декодируйте их с помощью кодировки UTF-8, чтобы получить исходный символ.
-
Замена закодированных последовательностей: Замените процентно закодированные последовательности декодированными символами.
Пример декодирования
-
Закодированный:
hello%20world
%20
переводится в пробел' '
- Декодированный:
hello world
-
Закодированный:
J%C3%BCrgen
%C3%A4
переводится в'ü'
в UTF-8- Декодированный:
Jürgen
Важность декодирования URL
Декодирование URL необходимо при обработке пользовательского ввода из URL, чтении параметров запроса или интерпретации данных, полученных из веб-запросов. Оно гарантирует, что информация, извлеченная из URL, находится в правильной, предполагаемой форме.
Сценарии использования
Веб-разработка
-
Параметры запроса: Кодирование пользовательского ввода в параметрах запроса для предотвращения ошибок или уязвимостей безопасности.
-
Параметры пути: Безопасное включение динамических данных в пути URL.
Передача данных
-
API и веб-сервисы: Обеспечение правильного формата данных, отправляемых в API.
-
Интернационализация: Поддержка URL с символами различных языков.
Безопасность
- Предотвращение атак внедрения: Кодирование вводов для снижения риска межсайтового скриптинга (XSS) и других атак внедрения.
Альтернативы
Хотя кодирование URL является важным, существуют сценарии, в которых другие методы кодирования могут быть более подходящими:
-
Кодирование Base64: Используется для кодирования двоичных данных внутри URL или когда требуется более высокая плотность информации.
-
Кодирование UTF-8 без процентного кодирования: Некоторые системы используют кодирование UTF-8 напрямую, но это может привести к проблемам, если не будет правильно обработано.
Учитывайте специфику вашего приложения, чтобы выбрать наиболее подходящий метод кодирования.
История
Кодирование URL было введено с ранними спецификациями стандартов URL и URI (Унифицированный Указатель Ресурсов) в 1990-х годах. Необходимость в последовательном способе кодирования специальных символов возникла из-за разнообразных систем и наборов символов, используемых по всему миру.
Ключевые события включают:
-
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
или +
).
SVG-диаграмма процесса кодирования URL
Соображения по безопасности
Правильное кодирование и декодирование URL имеют критическое значение для безопасности:
-
Предотвращение атак внедрения: Кодирование пользовательского ввода помогает предотвратить выполнение вредоносного кода, снижая риски, такие как межсайтовый скриптинг (XSS) и SQL-инъекции.
-
Целостность данных: Гарантирует, что данные передаются без изменений или повреждений.
-
Соблюдение стандартов: Соблюдение стандартов кодирования предотвращает проблемы совместимости между системами.
Ссылки
- RFC 3986 - Унифицированный указатель ресурса (URI): https://tools.ietf.org/html/rfc3986
- Что такое кодирование URL и как оно работает? https://www.urlencoder.io/learn/
- Процентное кодирование: https://en.wikipedia.org/wiki/Percent-encoding
- Стандарт URL: https://url.spec.whatwg.org/
- URI.escape устарело: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Заключение
Кодирование URL является важным аспектом веб-разработки и интернет-коммуникаций. Преобразуя специальные символы в безопасный формат, оно гарантирует, что URL правильно интерпретируются браузерами и серверами, сохраняя целостность и безопасность передачи данных. Этот инструмент предоставляет удобный способ экранирования специальных символов в ваших URL, улучшая совместимость и предотвращая потенциальные ошибки или уязвимости безопасности.
Обратная связь
Нажмите на всплывающее окно обратной связи, чтобы начать давать обратную связь об этом инструменте