Τι είναι αυτό το εργαλείο;
Η κωδικοποίηση URL (κωδικοποίηση ποσοστού) αντικαθιστά χαρακτήρες που δεν επιτρέπονται σε URL με ένα % ακολουθούμενο από την τιμή byte τους σε δεκαεξαδικό — ένα κενό γίνεται %20, και το 你 γίνεται %E4%BD%A0. Χωρίς αυτό, χαρακτήρες όπως κενά, &, ? και μη ASCII κείμενο θα διέκοπταν τη δομή του URL ή θα παρερμηνεύονταν από τους servers.
Υπάρχουν δύο συνηθισμένες ανάγκες, και αυτό το εργαλείο υποστηρίζει και τις δύο: κωδικοποίηση μιας τιμής που μπαίνει μέσα σε παράμετρο ερωτήματος (λειτουργία συστατικού — κωδικοποιεί και τα / ? & =), και κωδικοποίηση ολόκληρου URL διατηρώντας τη δομή του (λειτουργία πλήρους URL — αφήνει ανέπαφα τα :// ? &).
Μια ιστορική ιδιαιτερότητα που αξίζει να γνωρίζετε: ένα κενό είναι σωστά %20 σύμφωνα με το πρότυπο URL (RFC 3986), αλλά οι υποβολές φορμών HTML παραδοσιακά το κωδικοποιούν αντ' αυτού ως σύμβολο συν — γι' αυτό βλέπετε και τα δύο q=hello%20world και q=hello+world στην πράξη, και γιατί η αποκωδικοποίηση δεδομένων φόρμας μερικές φορές χρειάζεται το + να αντιμετωπίζεται ξεχωριστά.
Γιατί να το χρησιμοποιήσετε;
- Δημιουργήστε ασφαλή query strings — η είσοδος χρήστη με &, = ή κενά δεν θα διακόψει το URL σας.
- Αποκωδικοποιήστε μεγάλα κωδικοποιημένα URL από logs, analytics ή αλυσίδες ανακατεύθυνσης για να δείτε τι πραγματικά λένε.
- Σωστός χειρισμός UTF-8 για κινέζικα, emoji και άλλο μη ASCII κείμενο.
- Δύο λειτουργίες ώστε να μην κωδικοποιήσετε κατά λάθος το : και το / ενός ολόκληρου URL.
- Δωρεάν, άμεσο, χωρίς μεταφόρτωση.
Πώς χρησιμοποιείται
- Επικολλήστε το κείμενο ή URL σας στο πλαίσιο εισαγωγής.
- Επιλέξτε τη λειτουργία: "Συστατικό" για τιμές που μπαίνουν σε παραμέτρους ερωτήματος, "Πλήρες URL" για ολόκληρα URL.
- Κάντε κλικ στο "Κωδικοποίηση" ή "Αποκωδικοποίηση".
- Αντιγράψτε το αποτέλεσμα.
Παράδειγμα
Είσοδος
https://example.com/search?q=hello world & 你好Έξοδος
Λειτουργία συστατικού: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%20%26%20%E4%BD%A0%E5%A5%BD
Λειτουργία πλήρους URL: https://example.com/search?q=hello%20world%20&%20%E4%BD%A0%E5%A5%BDΗ λειτουργία συστατικού κωδικοποιεί και τους χαρακτήρες δομής· η λειτουργία πλήρους URL τους διατηρεί.
Συνηθισμένες περιπτώσεις χρήσης
- Δημιουργία URL προς κοινοποίηση όπου ένας όρος αναζήτησης ή τιμή φίλτρου προέρχεται από είσοδο χρήστη και μπορεί να περιέχει κενά, & ή άλλους ειδικούς χαρακτήρες.
- Αποκωδικοποίηση μεγάλου URL παρακολούθησης ή ανακατεύθυνσης από email ή διαφημιστική καμπάνια για να δείτε τον πραγματικό προορισμό και τις παραμέτρους πριν κάνετε κλικ.
- Αποσφαλμάτωση του γιατί μια παράμετρος ερωτήματος δεν διαβάζεται σωστά από έναν server — συχνά ο ένοχος είναι ένας δεσμευμένος χαρακτήρας που έπρεπε να είχε κωδικοποιηθεί αλλά δεν κωδικοποιήθηκε.
- Προετοιμασία μη αγγλικής τιμής (κινέζικα, ιαπωνικά, αραβικά κ.λπ.) για χρήση σε query string URL.
encodeURIComponent έναντι encodeURI, στην πράξη
Αυτά αντιστοιχούν άμεσα στις δύο λειτουργίες αυτού του εργαλείου και αντιστοιχούν σε πραγματικές συναρτήσεις JavaScript που ήδη γνωρίζουν οι προγραμματιστές: το encodeURIComponent (λειτουργία συστατικού) κωδικοποιεί τα πάντα εκτός από ένα μικρό σύνολο μη δεσμευμένων χαρακτήρων, καθιστώντας το ασφαλές για κάθε μεμονωμένη τιμή που εισάγεται σε URL — αυτό χρησιμοποιείτε για μια παράμετρο ερωτήματος, ένα τμήμα διαδρομής, ή μια τιμή hash fragment. Το encodeURI (λειτουργία πλήρους URL) αφήνει ανέπαφους τους χαρακτήρες δομής του URL (:, /, ?, #, &, =) επειδή υποθέτει ότι κωδικοποιείτε ένα ολόκληρο, ήδη δομημένο URL, όχι μια ακατέργαστη τιμή — η χρήση του σε μία παράμετρο τιμής θα απέτυχνε να κωδικοποιήσει τα & ή = που αυτή η τιμή μπορεί να περιέχει, κάτι που είναι το πιο συνηθισμένο λάθος που κάνει ο κόσμος όταν επιλέγει τη λάθος λειτουργία.
Δεσμευμένοι έναντι μη δεσμευμένων χαρακτήρων
Το πρότυπο URL (RFC 3986) χωρίζει τους χαρακτήρες σε δύο ομάδες: οι μη δεσμευμένοι χαρακτήρες (γράμματα, ψηφία, - _ . ~) είναι πάντα ασφαλείς και δεν κωδικοποιούνται ποτέ, ενώ οι δεσμευμένοι χαρακτήρες (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) έχουν ειδικό νόημα στη δομή URL και χρειάζονται κωδικοποίηση μόνο όταν εμφανίζονται ως κυριολεκτικά δεδομένα και όχι ως δομική στίξη. Αυτός είναι ακριβώς ο λόγος που υπάρχουν οι δύο λειτουργίες — η λειτουργία συστατικού αντιμετωπίζει τους δεσμευμένους χαρακτήρες ως δεδομένα προς προστασία, η λειτουργία πλήρους URL τους αντιμετωπίζει ως δομή προς διατήρηση. Η κατανόηση αυτής της διάκρισης είναι πιο χρήσιμη από την απομνημόνευση του πότε να χρησιμοποιείτε ποια λειτουργία, καθώς εξηγεί γιατί ο ίδιος χαρακτήρας (όπως το &) μερικές φορές κωδικοποιείται και άλλες φορές αφήνεται ως έχει, ανάλογα με τον ρόλο που παίζει στο συγκεκριμένο URL.
Συχνές ερωτήσεις
Πότε πρέπει να χρησιμοποιήσω λειτουργία συστατικού έναντι πλήρους URL;
Λειτουργία συστατικού (encodeURIComponent) όταν κωδικοποιείτε μία μόνο τιμή που μπαίνει μέσα σε παράμετρο ερωτήματος — κωδικοποιεί τα /, ?, & και = ώστε να μη διακόψουν το URL. Λειτουργία πλήρους URL (encodeURI) όταν κωδικοποιείτε ολόκληρο URL — διατηρεί τους χαρακτήρες δομής ώστε το URL να συνεχίζει να λειτουργεί.
Γιατί εμφανίστηκε %20 αντί για + για τα κενά;
Και τα δύο είναι έγκυρα σε διαφορετικά πλαίσια. Το %20 είναι η καθολική κωδικοποίηση ποσοστού για ένα κενό· το + σημαίνει κενό μόνο μέσα σε query strings που χρησιμοποιούν την παλαιότερη μορφή application/x-www-form-urlencoded. Αυτό το εργαλείο χρησιμοποιεί %20, που λειτουργεί παντού.
Γιατί η αποκωδικοποίηση αποτυγχάνει με σφάλμα;
Η είσοδος περιέχει μια εσφαλμένη ακολουθία ποσοστού, όπως ένα % που δεν ακολουθείται από δύο δεκαεξαδικά ψηφία. Αυτό συμβαίνει συχνά όταν ένα URL κόπηκε ή αποκωδικοποιήθηκε δύο φορές. Διορθώστε ή αφαιρέστε την κατεστραμμένη ακολουθία %.
Τι είναι η διπλή κωδικοποίηση;
Η κωδικοποίηση ήδη κωδικοποιημένου κειμένου: το %20 γίνεται %2520 επειδή το % το ίδιο κωδικοποιείται σε %25. Είναι ένα συνηθισμένο σφάλμα — αν η αποκωδικοποιημένη έξοδός σας εξακολουθεί να περιέχει κωδικούς %, αποκωδικοποιήστε την άλλη μια φορά.
Χειρίζεται αυτό κινέζικους χαρακτήρες και emoji;
Ναι. Το κείμενο κωδικοποιείται ως bytes UTF-8, οπότε το 你好 γίνεται %E4%BD%A0%E5%A5%BD και αποκωδικοποιείται πίσω τέλεια — η ίδια συμπεριφορά που χρησιμοποιούν οι browsers.