Κωδικοποίηση/Αποκωδικοποίηση URL

Κωδικοποιήστε και αποκωδικοποιήστε συμβολοσειρές URL, εξασφαλίζοντας ασφαλή επεξεργασία ειδικών χαρακτήρων και μη-ASCII κειμένου, κατάλληλη για παραμέτρους ερωτήματος και μεταφορά διαδρομών.

Κωδικοποίηση

Λειτουργία κωδικοποίησης

Αποκωδικοποίηση

Οδηγίες χρήσης

Η κωδικοποίηση URL μετατρέπει ειδικούς ή μη-ASCII χαρακτήρες σε μορφή %XX για ασφαλή μεταφορά σε URL.
Χρησιμοποιήστε την «κωδικοποίηση» για να μετατρέψετε το κείμενο σε ασφαλή μορφή για URL (π.χ. παράμετροι ερωτήματος).
Χρησιμοποιήστε την «αποκωδικοποίηση» για να ανακτήσετε τους αρχικούς χαρακτήρες από ακολουθίες %XX.
Κοινά σενάρια: επεξεργασία παραμέτρων ερωτήματος, μεταφορά δεδομένων φόρμας, κλήσεις API κ.λπ.

Γρήγορα παραδείγματα

Αρχικό κείμενο
https://example.com/search?q=你好世界&type=text
Κωδικοποίηση URL
https://example.com/search?q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C&type=text

Χαρακτηριστικά

  • Δύο λειτουργίες κωδικοποίησης: encodeURIComponent και encodeURI
  • Ευέλικτη διαχείριση κενών: κωδικοποίηση ως + ή %20
  • Πραγματική μετατροπή και εμφάνιση στατιστικών μήκους εισόδου/εξόδου
  • Κουμπιά αντιγραφής/καθαρισμού και διπλή αποστολή στο αντίθετο πλαίσιο
  • Πλήρης διεθνοποίηση και υποστήριξη πολλών θεμάτων DaisyUI

Τι είναι η κωδικοποίηση URL

Η κωδικοποίηση URL μετατρέπει τους χαρακτήρες σε ακολουθίες %XX που χρησιμοποιούν τον χαρακτήρα ποσοστού, για ασφαλή μετάδοση σε URLs.

Η encodeURIComponent είναι κατάλληλη για μοναδικά συστατικά (όπως μια τιμή παραμέτρου ερωτήματος) και κωδικοποιεί τους περισσότερους μη αλφαριθμητικούς χαρακτήρες.

Η encodeURI είναι κατάλληλη για ολόκληρες συμβολοσειρές URI και δεν κωδικοποιεί χαρακτήρες που έχουν σημασία στη δομή, όπως ?, &, =, /.

Κοινές χρήσεις

  • Δημιουργία παραμέτρων ερωτήματος (λέξεις-κλειδιά αναζήτησης, συνθήκες φιλτραρίσματος κ.λπ.)
  • Κωδικοποίηση και μετάδοση δεδομένων φόρμας GET/POST
  • Κωδικοποίηση παραμέτρων αιτήματος API
  • Ασφαλής εισαγωγή χρηστικών εισόδων σε τμήματα διαδρομής URL

Συχνές ερωτήσεις και παγίδες

  • encodeURI vs encodeURIComponent: Για συστατικά χρησιμοποιείστε component, για ολόκληρη τη διεύθυνση χρησιμοποιείστε URI
  • Κενά και +: Στην 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);