Kodowanie i dekodowanie URL
Koduj i dekoduj łańcuchy URL, aby bezpiecznie obsługiwać znaki specjalne i tekst nieazjatycki, idealne do parametrów zapytań i transmisji ścieżek.
Jak używać
Kodowanie URL przekształca znaki specjalne lub nieazjatyckie na format %XX, umożliwiając bezpieczną transmisję w URL.
Użyj 'Koduj', aby przekształcić tekst na format bezpieczny dla URL (np. dla parametrów zapytań).
Użyj 'Dekoduj', aby przywrócić sekwencje %XX do ich oryginalnych znaków.
Typowe scenariusze: obsługa parametrów zapytań, transmisja danych formularza, wywołania API itp.
Funkcje
- Dwa tryby kodowania: encodeURIComponent i encodeURI
- Elastyczne obsługiwanie spacji: kodowanie jako + lub %20
- Konwersja w czasie rzeczywistym ze statystykami długości wejścia/wyjścia
- Przyciski kopiowania/czyszczenia oraz dwukierunkowa funkcja wysyłania do panelu
- Pełna obsługa internacjonalizacji z wieloma motywami DaisyUI
Co to jest kodowanie URL?
Kodowanie URL przekształca znaki na sekwencje zakodowane procentowo %XX, aby zapewnić bezpieczną transmisję w adresach URL.
encodeURIComponent nadaje się do poszczególnych elementów (np. pojedynczej wartości parametru zapytania) i koduje większość znaków niealfanumerycznych.
encodeURI jest przeznaczone dla pełnych ciągów URI i zachowuje znaki zarezerwowane o znaczeniu strukturalnym, takie jak ?, &, = oraz /.
Typowe zastosowania
- Tworzenie parametrów zapytania (np. słów kluczowych wyszukiwania, warunków filtrowania)
- Kodowanie i transmisja danych formularza za pomocą GET/POST
- Kodowanie parametrów żądań API
- Bezpieczne wstawianie danych wprowadzonych przez użytkownika do segmentów ścieżki URL
FAQ i pułapki
- encodeURI vs encodeURIComponent: Używaj kodowania component dla poszczególnych części, a kodowania URI dla pełnych adresów URL
- Spacje i +: W formacie application/x-www-form-urlencoded spacje są często reprezentowane jako + w ciągach zapytania
- Unikaj podwójnego dekodowania: Powtarzające się dekodowanie może zniszczyć dane
- Nieprawidłowe sekwencje procentowe generują błędy; obsługuj wyjątki w sposób elastyczny
Jak wykonać kodowanie/dekodowanie URL w językach programowania
JavaScript
Koduj
// 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);
Dekoduj
// 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
Koduj
// 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']);
Dekoduj
// Component
$decoded = rawurldecode($s);
// If input uses '+' for spaces
$decodedPlus = urldecode($s);
Python
Koduj
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)
Dekoduj
from urllib.parse import unquote, unquote_plus
# Component
dec = unquote(s)
# Input with '+' for spaces
dec_plus = unquote_plus(s)
Go
Koduj
import (
"net/url"
)
// Query component
enc := url.QueryEscape(text) // spaces => +
// Path segment
// go1.8+
// url.PathEscape(text)
Dekoduj
import (
"net/url"
)
// Query component
dec, _ := url.QueryUnescape(s)
// Path segment
// url.PathUnescape(s)
Rust
Koduj
// 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
Dekoduj
use urlencoding::decode;
// decode treats '+' as space
let dec = decode(s)?; // Result, _>
Java
Koduj
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");
Dekoduj
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
// URLDecoder treats '+' as space
String dec = URLDecoder.decode(s, StandardCharsets.UTF_8);