Pengkodean & Dekode URL
Kodekan dan dekodekan string URL untuk menangani karakter khusus dan teks non-ASCII dengan aman, ideal untuk parameter kueri dan transmisi path.
Cara Menggunakan
Pengkodean URL mengubah karakter khusus atau non-ASCII menjadi format %XX untuk transmisi yang aman dalam URL.
Gunakan 'Encode' untuk mengubah teks menjadi format aman URL (misalnya, untuk parameter kueri).
Gunakan 'Decode' untuk mengembalikan urutan %XX ke karakter aslinya.
Skenario umum: penanganan parameter kueri, transmisi data formulir, panggilan API, dll.
Fitur
- Dua mode pengodean: encodeURIComponent dan encodeURI
- Penanganan spasi yang fleksibel: kodekan sebagai + atau %20
- Konversi real-time dengan statistik panjang input/output
- Tombol salin/hapus dan fungsi kirim ke panel dua arah
- Dukungan internasionalisasi penuh dengan multi-tema DaisyUI
Apa Itu Pengkodean URL?
Pengodean URL mengubah karakter menjadi urutan persen-encoded %XX untuk memastikan transmisi yang aman dalam URL.
encodeURIComponent cocok untuk komponen individual (misalnya, nilai parameter kueri tunggal) dan mengodekan sebagian besar karakter alfanumerik non-huruf.
encodeURI dirancang untuk string URI lengkap dan mempertahankan karakter khusus yang memiliki makna struktural, seperti ?, &, =, dan /.
Kasus Penggunaan Umum
- Membangun parameter kueri (misalnya, kata kunci pencarian, kondisi filter)
- Mengodekan dan mengirim data formulir via GET/POST
- Mengodekan parameter permintaan API
- Menyisipkan input pengguna secara aman ke segmen jalur URL
FAQ & Kesalahan Umum
- encodeURI vs encodeURIComponent: Gunakan pengodean komponen untuk bagian individual, dan pengodean URI untuk URL keseluruhan
- Spasi dan +: Dalam application/x-www-form-urlencoded, spasi biasanya direpresentasikan sebagai + dalam string kueri
- Hindari decoding ganda: Decoding berulang dapat merusak data
- Urutan persen tidak valid akan memicu error; tangani exception dengan baik
Cara Melakukan Pengkodean/Dekode URL dalam Bahasa Pemrograman
JavaScript
Encode
// 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);
Decode
// 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
Encode
// 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']);
Decode
// Component
$decoded = rawurldecode($s);
// If input uses '+' for spaces
$decodedPlus = urldecode($s);
Python
Encode
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)
Decode
from urllib.parse import unquote, unquote_plus
# Component
dec = unquote(s)
# Input with '+' for spaces
dec_plus = unquote_plus(s)
Go
Encode
import (
"net/url"
)
// Query component
enc := url.QueryEscape(text) // spaces => +
// Path segment
// go1.8+
// url.PathEscape(text)
Decode
import (
"net/url"
)
// Query component
dec, _ := url.QueryUnescape(s)
// Path segment
// url.PathUnescape(s)
Rust
Encode
// 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
Decode
use urlencoding::decode;
// decode treats '+' as space
let dec = decode(s)?; // Result, _>
Java
Encode
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");
Decode
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
// URLDecoder treats '+' as space
String dec = URLDecoder.decode(s, StandardCharsets.UTF_8);