Κωδικοποίηση & Αποκωδικοποίηση URL
Κωδικοποιήστε και αποκωδικοποιήστε συμβολοσειρές URL για να χειρίζεστε με ασφάλεια ειδικούς χαρακτήρες και κείμενο μη ASCII, ιδανικά για παραμέτρους ερωτημάτων και μετάδοση διαδρομών.
Πώς να χρησιμοποιήσετε
Η κωδικοποίηση URL μετατρέπει ειδικούς ή μη ASCII χαρακτήρες σε μορφή %XX για ασφαλή μετάδοση στα URL.
Χρησιμοποιήστε την «Κωδικοποίηση» για να μετατρέψετε το κείμενο σε μορφή ασφαλή για URL (π.χ. για παραμέτρους ερωτημάτων).
Χρησιμοποιήστε την «Αποκωδικοποίηση» για να επαναφέρετε τις ακολουθίες %XX στους αρχικούς τους χαρακτήρες.
Συνήθεις περιπτώσεις: χειρισμός παραμέτρων ερωτημάτων, μετάδοση δεδομένων φορμών, κλήσεις API κλπ.
Χαρακτηριστικά
- Δύο τρόποι κωδικοποίησης: encodeURIComponent και encodeURI
- Ευέλικτη διαχείριση κενών: κωδικοποίηση ως + ή %20
- Μετατροπή σε πραγματικό χρόνο με στατιστικά μήκους εισόδου/εξόδου
- Κουμπιά αντιγραφής/εκκαθάρισης και αμφίδρομη λειτουργία αποστολής στο πάνελ
- Πλήρης υποστήριξη διεθνικοποίησης με πολλαπλά θέματα DaisyUI
Τι είναι η κωδικοποίηση URL;
Η κωδικοποίηση URL μετατρέπει χαρακτήρες σε ακολουθίες με περιεκτοποίηση %, για να εξασφαλίσει ασφαλή μετάδοση στα URL.
Το encodeURIComponent είναι κατάλληλο για μεμονωμένα στοιχεία (π.χ. μια τιμή παραμέτρου αναζήτησης) και κωδικοποιεί τους περισσότερους μη αλφαριθμητικούς χαρακτήρες.
Το encodeURI έχει σχεδιαστεί για πλήρη συμβολοσειρές URI και διατηρεί τους δεσμευμένους χαρακτήρες με δομική σημασία, όπως ?, &, = και /
Συνήθεις περιπτώσεις χρήσης
- Δημιουργία παραμέτρων αναζήτησης (π.χ. λέξεις-κλειδιά αναζήτησης, συνθήκες φιλτραρίσματος)
- Κωδικοποίηση και μετάδοση δεδομένων φορμών μέσω GET/POST
- Κωδικοποίηση παραμέτρων αιτήματος API
- Ασφαλής εισαγωγή δεδομένων από χρήστη σε τμήματα διαδρομής URL
Συνήθεις ερωτήσεις και παγίδες
- encodeURI vs encodeURIComponent: Χρησιμοποιήστε κωδικοποίηση στοιχείου για μεμονωμένα μέρη και κωδικοποίηση URI για πλήρη URL
- Κενά και +: Στην application/x-www-form-urlencoded, τα κενά αντιπροσωπεύονται συνήθως ως + στις συμβολοσειρές αναζήτησης
- Αποφύγετε την διπλή αποκωδικοποίηση: Η επαναλαμβανόμενη αποκωδικοποίηση μπορεί να καταστρέψει δεδομένα
- Οι μη έγκυρες ακολουθίες % προκαλούν σφάλματα; χειριστείτε εξαιρέσεις με ευχέρεια
Πώς να εκτελέσετε κωδικοποίηση/αποκωδικοποίηση URL σε γλώσσες προγραμματισμού
JavaScript
Κωδικοποίηση
// 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);
Αποκωδικοποίηση
// 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
Κωδικοποίηση
// 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']);
Αποκωδικοποίηση
// Component
$decoded = rawurldecode($s);
// If input uses '+' for spaces
$decodedPlus = urldecode($s);
Python
Κωδικοποίηση
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)
Αποκωδικοποίηση
from urllib.parse import unquote, unquote_plus
# Component
dec = unquote(s)
# Input with '+' for spaces
dec_plus = unquote_plus(s)
Go
Κωδικοποίηση
import (
"net/url"
)
// Query component
enc := url.QueryEscape(text) // spaces => +
// Path segment
// go1.8+
// url.PathEscape(text)
Αποκωδικοποίηση
import (
"net/url"
)
// Query component
dec, _ := url.QueryUnescape(s)
// Path segment
// url.PathUnescape(s)
Rust
Κωδικοποίηση
// 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
Αποκωδικοποίηση
use urlencoding::decode;
// decode treats '+' as space
let dec = decode(s)?; // Result, _>
Java
Κωδικοποίηση
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");
Αποκωδικοποίηση
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
// URLDecoder treats '+' as space
String dec = URLDecoder.decode(s, StandardCharsets.UTF_8);