URL kódování a dekódování

Kódujte a dekódujte řetězce URL pro bezpečné zpracování speciálních znaků a textu mimo ASCII, ideální pro parametry dotazů a přenos cest.

Kódovat

Režim kódování

Dekódovat

Jak používat

URL kódování převádí speciální znaky nebo znaky mimo ASCII do formátu %XX pro bezpečný přenos v URL.
Použijte tlačítko 'Kódovat' pro transformaci textu do formátu bezpečného pro URL (například pro parametry dotazů).
Použijte tlačítko 'Dekódovat' pro obnovení sekvencí %XX zpět na jejich původní znaky.
Běžné scénáře: zpracování parametrů dotazů, přenos dat formulářů, volání API atd.

Rychlé příklady

Původní text
https://example.com/search?q=你好世界&type=text
URL kódováno
https://example.com/search?q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C&type=text

Funkce

  • Dva režimy kódování: encodeURIComponent a encodeURI
  • Flexibilní zacházení s mezerami: kódovat jako + nebo %20
  • Real-time konverze se statistikou délky vstupu/výstupu
  • Tlačítka pro kopírování/vymazání a obousměrná funkce odesílání do panelu
  • Plná podpora internacionalizace s více motivy DaisyUI

Co je URL kódování?

URL kódování převádí znaky na procentem kódované sekvence %XX, aby bylo zajištěno bezpečné přenosy v URL.

encodeURIComponent je vhodný pro jednotlivé komponenty (např. hodnota jednoho parametru dotazu) a kóduje většinu znaků abecedně-číselných.

encodeURI je určen pro celé řetězce URI a zachovává vyhrazené znaky se strukturálním významem, jako jsou ?, &, = a /.

Běžné případy použití

  • Vytváření parametrů dotazu (např. klíčová slova pro vyhledávání, filtrační podmínky)
  • Kódování a přenos dat formuláře přes GET/POST
  • Kódování parametrů požadavků API
  • Bezpečné vkládání uživatelského vstupu do segmentů cesty URL

Časté otázky a úskalí

  • encodeURI vs encodeURIComponent: Pro jednotlivé části používejte kódování komponent, pro celé URL kódování URI
  • Mezery a +: V aplikacích x-www-form-urlencoded jsou mezery často reprezentovány jako + v řetězcích dotazů
  • Vyhněte se dvojitému dekódování: Opakované dekódování může data poškodit
  • Neplatné procentní sekvence vyhazují chyby; zpracovávejte výjimky šetrně

Jak provést kódování/dekódování URL v programovacích jazycích

JavaScript
Kódovat
// 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);
Dekódovat
// 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
Kódovat
// 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']);
Dekódovat
// Component
$decoded = rawurldecode($s);
// If input uses '+' for spaces
$decodedPlus = urldecode($s);
Python
Kódovat
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)
Dekódovat
from urllib.parse import unquote, unquote_plus

# Component
dec = unquote(s)
# Input with '+' for spaces
dec_plus = unquote_plus(s)
Go
Kódovat
import (
    "net/url"
)

// Query component
enc := url.QueryEscape(text) // spaces => +
// Path segment
// go1.8+
// url.PathEscape(text)
Dekódovat
import (
    "net/url"
)

// Query component
dec, _ := url.QueryUnescape(s)
// Path segment
// url.PathUnescape(s)
Rust
Kódovat
// 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
Dekódovat
use urlencoding::decode;

// decode treats '+' as space
let dec = decode(s)?; // Result, _>
Java
Kódovat
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");
Dekódovat
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

// URLDecoder treats '+' as space
String dec = URLDecoder.decode(s, StandardCharsets.UTF_8);