Kodowanie i dekodowanie URL

Koduj i dekoduj ciągi URL, bezpiecznie obsługując znaki specjalne i tekst nie-ASCII, odpowiednie dla parametrów zapytań i transferu ścieżek.

Kodowanie

Tryb kodowania

Dekodowanie

Instrukcje użytkowania

Kodowanie URL zamienia znaki specjalne lub znaki nie-ASCII na format %XX, aby zapewnić bezpieczny transfer w URL.
Użyj opcji „Koduj”, aby przekształcić tekst w bezpieczną formę stosowaną w URL (np. parametry zapytań).
Użyj opcji „Dekoduj”, aby przywrócić sekwencje %XX do oryginalnych znaków.
Typowe scenariusze: obsługa parametrów zapytań, przesyłanie danych formularzy, wywoływania API itp.

Szybkie przykłady

Oryginalny tekst
https://example.com/search?q=你好世界&type=text
Kodowanie URL
https://example.com/search?q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C&type=text

Funkcje

  • Dwa tryby kodowania: encodeURIComponent i encodeURI
  • Elastyczna obsługa spacji: kodowanie jako + lub %20
  • Konwersja w czasie rzeczywistym z wyświetlaniem statystyk długości wejścia/wyjścia
  • Przyciski kopiowania i czyszczenia oraz dwukierunkowa wymiana między panelami
  • Pełna obsługa internacionalizacji i wielotematowego interfejsu DaisyUI

Co to jest kodowanie URL?

Kodowanie URL przekształca znaki na sekwencje procentowe %XX, aby bezpiecznie przesyłać je w adresach URL.

encodeURIComponent jest przeznaczone do pojedynczych komponentów (np. wartości parametru zapytania) i koduje większość znaków niealfanumerycznych.

encodeURI jest przeznaczone do pełnych ciągów URI i nie koduje zachowanych znaków o znaczeniu strukturalnym, takich jak ?, &, =, / .

Typowe zastosowania

  • Tworzenie parametrów zapytania (słowa kluczowe wyszukiwania, warunki filtrowania itp.)
  • Kodowanie i przesyłanie danych formularza GET/POST
  • Kodowanie parametrów żądań API
  • Bezpieczne umieszczanie danych wprowadzonych przez użytkownika w fragmentach ścieżki URL

Często zadawane pytania i pułapki

  • encodeURI vs encodeURIComponent: dla pojedynczego komponentu użyj component, dla pełnego adresu URI użyj URI
  • Spacja i +: w formacie application/x-www-form-urlencoded spacja jest często reprezentowana jako + w ciągu zapytania
  • Unikaj wielokrotnego dekodowania: wielokrotne dekodowanie może uszkodzić dane
  • Nieprawidłowe sekwencje procentowe powodują błąd; należy obsługiwać wyjątki w sposób elastyczny

Jak wykonać kodowanie i dekodowanie URL w językach programowania

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

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

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

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

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

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