Penyandian & Penyahsandian URL
Sandikan dan nyahsandikan rentetan URL untuk mengendalikan aksara khas dan teks bukan-ASCII dengan selamat, sesuai untuk parameter pertanyaan dan penghantaran laluan.
Cara Menggunakan
Penyandian URL menukar aksara khas atau bukan-ASCII ke dalam format %XX untuk penghantaran yang selamat dalam URL.
Gunakan 'Sandikan' untuk menukar teks kepada format selamat URL (cth., untuk parameter pertanyaan).
Gunakan 'Nyahsandikan' untuk memulihkan urutan %XX kembali ke aksara asalnya.
Senario umum: mengendalikan parameter pertanyaan, penghantaran data borang, panggilan API, dll.
Ciri-ciri
- Dua mod pengekodan: encodeURIComponent dan encodeURI
- Pengendalian ruang fleksibel: kodkan sebagai + atau %20
- Penukaran masa nyata dengan statistik panjang input/output
- Butang salin/kosongkan dan fungsi hantar ke panel dua arah
- Sokongan antarabangsa penuh dengan tema pelbagai DaisyUI
Apakah Penyandian URL?
Pengekodan URL menukar aksara kepada urutan peratus dienkod %XX untuk memastikan penghantaran selamat dalam URL.
encodeURIComponent sesuai untuk komponen individu (contohnya, nilai parameter pertanyaan tunggal) dan mengekod kebanyakan aksara bukan alfanumerik.
encodeURI direka untuk rentetan URI penuh dan mengekalkan aksara terpelihara yang mempunyai makna struktur, seperti ?, &, =, dan /.
Kes Penggunaan Umum
- Membina parameter pertanyaan (contohnya, kata kunci carian, syarat penapis)
- Mengekod dan menghantar data borang melalui GET/POST
- Mengekod parameter permintaan API
- Menyisip input pengguna ke segmen laluan URL dengan selamat
Soalan Lazim & Kesilapan
- encodeURI vs encodeURIComponent: Gunakan pengekodan komponen untuk bahagian individu, dan pengekodan URI untuk URL keseluruhan
- Ruang dan +: Dalam application/x-www-form-urlencoded, ruang biasanya diwakili oleh + dalam rentetan pertanyaan
- Elakkan penyahkodan berganda: Penyahkodan berulang boleh merosakkan data
- Urutan peratus tidak sah mencetuskan ralat; kendalikan pengecualian dengan baik
Cara Melakukan Penyandian/Penyahsandian URL dalam Bahasa Pengaturcaraan
JavaScript
Enkod
// 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);
Nyahkod
// 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
Enkod
// 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']);
Nyahkod
// Component
$decoded = rawurldecode($s);
// If input uses '+' for spaces
$decodedPlus = urldecode($s);
Python
Enkod
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)
Nyahkod
from urllib.parse import unquote, unquote_plus
# Component
dec = unquote(s)
# Input with '+' for spaces
dec_plus = unquote_plus(s)
Go
Enkod
import (
"net/url"
)
// Query component
enc := url.QueryEscape(text) // spaces => +
// Path segment
// go1.8+
// url.PathEscape(text)
Nyahkod
import (
"net/url"
)
// Query component
dec, _ := url.QueryUnescape(s)
// Path segment
// url.PathUnescape(s)
Rust
Enkod
// 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
Nyahkod
use urlencoding::decode;
// decode treats '+' as space
let dec = decode(s)?; // Result, _>
Java
Enkod
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");
Nyahkod
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
// URLDecoder treats '+' as space
String dec = URLDecoder.decode(s, StandardCharsets.UTF_8);