Кодирование и декодирование URL
Кодируйте и декодируйте строки URL, безопасно обрабатывайте специальные символы и не-ASCII текст, подходящие для передачи параметров запроса и путей.
Инструкции по использованию
Кодирование URL преобразует специальные или не-ASCII символы в формат %XX для безопасной передачи в URL.
Используйте «Кодировать», чтобы преобразовать текст в безопасную форму, пригодную для URL (например, параметры запроса).
Используйте «Декодировать», чтобы восстановить исходные символы из последовательностей %XX.
Типичные сценарии: обработка параметров запроса, передача данных форм, вызовы API и т.д.
Функции
- Два режима кодирования: encodeURIComponent и encodeURI
- Гибкая обработка пробелов: кодировка как + или %20
- Мгновенное преобразование со статистикой длины ввода/вывода
- Кнопки копирования/очистки и двунаправленная отправка на другую панель
- Полная поддержка интернационализации и множественных тем DaisyUI
Что такое кодирование URL
URL-кодирование преобразует символы в последовательности с процентным кодированием %XX для безопасной передачи в URL.
encodeURIComponent подходит для отдельных компонентов (например, значений параметров запроса) и кодирует большинство неалфавитно-цифровых символов.
encodeURI подходит для полных строк URI и не кодирует зарезервированные символы со структурным значением, такие как ?, &, =, \/
Типичные применения
- Формирование параметров запроса (поисковые ключевые слова, условия фильтрации и т. д.)
- Кодированная передача данных форм GET/POST
- Кодирование параметров API-запросов
- Безопасное помещение пользовательского ввода в сегменты пути URL
Часто задаваемые вопросы и ловушки
- encodeURI против encodeURIComponent: для отдельных компонентов используйте component, для полной ссылки — URI
- Пробелы и +: в query-строке application/x-www-form-urlencoded пробел часто обозначается как +
- Избегайте двойного декодирования: многократное декодирование может повредить данные
- Недопустимые процентные последовательности вызывают ошибку; необходимо корректно обрабатывать исключения
Как выполнять кодирование и декодирование URL в языках программирования
JavaScript
Кодирование
// Component (recommended for query values)
const encoded = encodeURIComponent(text);
// If you need '+' for spaces in query strings
const encodedPlus = encoded.replace(/%20/g, '+');
// Full URI
const encodedUri = encodeURI(url);
Декодирование
// Treat '+' as space if needed
const input = plusAsSpace ? s.replace(/\+/g, ' ') : s;
// Component
const dec1 = decodeURIComponent(input);
// Fallback to decodeURI when input is a full URL
const dec2 = decodeURI(input);
PHP
Кодирование
// Component (RFC 3986)
$encoded = rawurlencode($text);
// '+' for spaces (application/x-www-form-urlencoded)
$encodedPlus = str_replace('%20', '+', $encoded);
// Full query usage
$query = http_build_query(['q' => '你好 世界', 'type' => 'text']);
Декодирование
// Component
$decoded = rawurldecode($s);
// If input uses '+' for spaces
$decodedPlus = urldecode($s);
Python
Кодирование
from urllib.parse import quote, quote_plus
# Component (RFC 3986)
enc = quote(text, safe='')
# '+' for spaces (application/x-www-form-urlencoded)
enc_plus = quote_plus(text)
Декодирование
from urllib.parse import unquote, unquote_plus
# Component
dec = unquote(s)
# Input with '+' for spaces
dec_plus = unquote_plus(s)
Go
Кодирование
import (
"net/url"
)
// Query component
enc := url.QueryEscape(text) // spaces => +
// Path segment
// go1.8+
// url.PathEscape(text)
Декодирование
import (
"net/url"
)
// Query component
dec, _ := url.QueryUnescape(s)
// Path segment
// url.PathUnescape(s)
Rust
Кодирование
// Cargo.toml: urlencoding = "^2"
use urlencoding::{encode, encode_binary};
let enc = encode(text); // component; spaces => %20
let enc_plus = enc.replace("%20", "+"); // if you need '+' for spaces
Декодирование
use urlencoding::decode;
// decode treats '+' as space
let dec = decode(s)?; // Result, _>
Java
Кодирование
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
// Query param / form style (spaces => '+')
String enc = URLEncoder.encode(text, StandardCharsets.UTF_8);
// For RFC3986-like component encoding, replace '+' with %20 if needed
String encSpace = enc.replace("+", "%20");
Декодирование
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
// URLDecoder treats '+' as space
String dec = URLDecoder.decode(s, StandardCharsets.UTF_8);