Codare și Decodare URL

Codifică și decodifică șiruri URL pentru a gestiona în siguranță caracterele speciale și textul non-ASCII, ideal pentru parametrii de interogare și transmiterea căilor.

Codare

Mod de codare

Decodare

Cum se utilizează

Codarea URL convertește caracterele speciale sau non-ASCII în format %XX pentru transmitere sigură în URL-uri.
Utilizează 'Codare' pentru a transforma textul într-un format sigur pentru URL (de exemplu, pentru parametrii de interogare).
Utilizează 'Decodare' pentru a restabili secvențele %XX în caracterele lor originale.
Scenarii comune: gestionarea parametrilor de interogare, transmiterea datelor din formulare, apeluri API etc.

Exemple rapide

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

Caracteristici

  • Două moduri de codificare: encodeURIComponent și encodeURI
  • Gestionare flexibilă a spațiilor: codificate ca + sau %20
  • Conversie în timp real cu statistici privind lungimea intrării/ieșirii
  • Butoane de copiere/ștergere și funcționalitate bidirecțională de trimitere în panou
  • Suport complet de internaționalizare cu tema multi DaisyUI

Ce este codarea URL?

Codificarea URL transformă caracterele în secvențe codificate procentual %XX pentru a asigura transmiterea sigură în URL-uri.

encodeURIComponent este potrivit pentru componente individuale (de exemplu, o valoare de parametru de interogare unică) și codifică majoritatea caracterelor nealfanumerice.

encodeURI este conceput pentru șiruri URI complete și păstrează caracterele rezervate cu semnificație structurală, cum ar fi ?, &, = și /.

Cazuri de utilizare comune

  • Construirea parametrilor de interogare (de exemplu, cuvinte cheie de căutare, condiții de filtrare)
  • Codificarea și transmiterea datelor din formular prin GET/POST
  • Codificarea parametrilor de solicitare API
  • Inserarea sigură a intrării utilizatorului în segmentele de cale URL

Întrebări frecvente și capcane

  • encodeURI vs encodeURIComponent: Utilizați codificarea componentelor pentru părți individuale și codificarea URI pentru URL-uri complete
  • Spații și +: În application/x-www-form-urlencoded, spațiile sunt reprezentate frecvent ca + în șirurile de interogare
  • Evitați decodificarea dublă: Decodificarea repetată poate corupe datele
  • Secvențele procentuale nevalide generează erori; gestionați excepțiile în mod adecvat

Cum se realizează codarea/decodarea URL în limbaje de programare

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

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

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

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

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

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