Πώς να το χρησιμοποιήσετε
- Επιλέξτε Encode ή Decode.
- Επιλέξτε Component για μία μεμονωμένη τιμή (όπως μία παράμετρο query) ή Full URL για μια ολόκληρη διεύθυνση.
- Πληκτρολογήστε ή επικολλήστε το κείμενό σας. Το αποτέλεσμα εμφανίζεται αμέσως στα δεξιά (ή κάτω σε κινητά).
- Αντιγράψτε το αποτέλεσμα ή χρησιμοποιήστε την επιλογή «Use output as input» για να αντιστρέψετε τη λειτουργία και να ελέγξετε τη μετατροπή πλήρους κύκλου.
Πώς λειτουργεί
Οι διευθύνσεις URL μπορούν να περιέχουν μόνο ένα περιορισμένο σύνολο χαρακτήρων ASCII. Όλα τα υπόλοιπα, συμπεριλαμβανομένων των κενών, των τονισμένων γραμμάτων και των emoji, γράφονται ως ακολουθίες διαφυγής με %: ο χαρακτήρας μετατρέπεται σε byte UTF-8 και κάθε byte γίνεται % ακολουθούμενο από δύο δεκαεξαδικά ψηφία. Το κενό γίνεται %20, το é γίνεται %C3%A9 και το € γίνεται %E2%82%AC.
Η λειτουργία Component χρησιμοποιεί τις encodeURIComponent και decodeURIComponent της JavaScript. Κωδικοποιεί κάθε χαρακτήρα που έχει ειδική σημασία σε μια διεύθυνση URL, συμπεριλαμβανομένων των / ? # & = + : και @, ώστε το αποτέλεσμα να μπορεί να τοποθετηθεί με ασφάλεια μέσα σε μια τιμή ερωτήματος ή σε ένα μεμονωμένο τμήμα διαδρομής. Αφήνει αμετάβλητους μόνο τους χαρακτήρες A–Z, a–z, 0–9 και - _ . ! ~ * ' ( ).
Η λειτουργία πλήρους URL χρησιμοποιεί τις encodeURI και decodeURI. Υποθέτει ότι η είσοδος είναι ήδη μια πλήρης διεύθυνση URL και αφήνει ανέπαφους τους δεσμευμένους χαρακτήρες ; , / ? : @ & = + $ #, ώστε η διεύθυνση να συνεχίσει να λειτουργεί. Κατά την αποκωδικοποίηση, η decodeURI αφήνει επίσης τις ακολουθίες διαφυγής αυτών των δεσμευμένων χαρακτήρων ως έχουν: το %2F παραμένει %2F, επειδή η μετατροπή του σε / θα άλλαζε τη σημασία της διεύθυνσης URL.
Η επιλογή form-data ακολουθεί το application/x-www-form-urlencoded, τη μορφή που χρησιμοποιούν οι φυλλομετρητές κατά την υποβολή φορμών HTML: το κενό γράφεται ως + αντί για %20. Κατά την αποκωδικοποίηση με αυτή την επιλογή, κάθε + γίνεται κενό· ένα πραγματικό σύμβολο συν πρέπει τότε να γραφτεί ως %2B.
Η μη έγκυρη είσοδος δεν απορρίπτεται ποτέ. Αν ένα % δεν ακολουθείται από δύο δεκαεξαδικά ψηφία ή μια ακολουθία διαφυγής δεν σχηματίζει έγκυρο UTF-8, το εργαλείο δείχνει πού βρίσκεται το πρόβλημα και διατηρεί το κείμενό σας για να το διορθώσετε.
Παραδείγματα
Τοποθέτηση τιμής σε συμβολοσειρά ερωτήματος
Για να αναζητήσετε «Rock & Roll» στη διεύθυνση https://example.com/search?q=…, κωδικοποιήστε μόνο την τιμή στη λειτουργία Component: Rock%20%26%20Roll. Χωρίς κωδικοποίηση, το & θα τερμάτιζε την παράμετρο q και θα ξεκινούσε μια νέα με όνομα « Roll».
Διόρθωση διεύθυνσης URL με κενά και τόνους
Στη λειτουργία πλήρους URL, η διεύθυνση https://example.com/menu/crème brûlée.html γίνεται https://example.com/menu/cr%C3%A8me%20br%C3%BBl%C3%A9e.html. Οι κάθετοι και η άνω και κάτω τελεία παραμένουν ως έχουν, ώστε ο σύνδεσμος να εξακολουθεί να λειτουργεί.
Ανάγνωση καταγεγραμμένων δεδομένων φόρμας
Ένα αρχείο καταγραφής διακομιστή εμφανίζει name=Jane+Doe&city=S%C3%A3o+Paulo. Αποκωδικοποιήστε το στη λειτουργία Component με ενεργοποιημένη την επιλογή «Αντιμετώπιση του + ως κενό» για να διαβάσετε name=Jane Doe&city=São Paulo.
Συχνές ερωτήσεις
Ποια είναι η διαφορά μεταξύ encodeURI και encodeURIComponent;
Η encodeURIComponent κωδικοποιεί τους χαρακτήρες που διαχωρίζουν τα μέρη μιας διεύθυνσης URL (/ ? # & = + : @ και άλλους), επομένως προορίζεται για ένα τμήμα μιας διεύθυνσης URL. Η encodeURI διατηρεί αυτούς τους χαρακτήρες, επομένως προορίζεται για μια πλήρη διεύθυνση URL. Η χρήση της encodeURI σε μια τιμή ερωτήματος είναι συνηθισμένο σφάλμα: ένα & ή = μέσα στην τιμή δεν θα κωδικοποιούνταν και θα χαλούσε τη συμβολοσειρά ερωτήματος.
Το κενό πρέπει να είναι %20 ή +;
Στη διαδρομή (path) ενός URL το κενό είναι πάντα %20. Σε ένα query string εμφανίζονται και τα δύο: το %20 ισχύει παντού, ενώ το + σημαίνει κενό μόνο σε δεδομένα φόρμας (application/x-www-form-urlencoded), δηλαδή όπως διαβάζουν τα query strings οι φόρμες HTML και πολλά frameworks διακομιστή. Αν δεν είστε σίγουροι, χρησιμοποιήστε %20.
Γιατί λαμβάνω σφάλμα κατά την αποκωδικοποίηση;
Η αποκωδικοποίηση αποτυγχάνει όταν ένα σύμβολο % δεν ακολουθείται από δύο δεκαεξαδικά ψηφία (για παράδειγμα «50% off») ή όταν τα escaped bytes δεν είναι έγκυρο UTF-8, κάτι που συνήθως σημαίνει ότι το κείμενο κωδικοποιήθηκε με ένα παλαιότερο σύνολο χαρακτήρων, όπως Latin-1 (το é ως %E9 αντί για %C3%A9). Το μήνυμα σφάλματος δείχνει τη θέση του προβλήματος.
Γιατί το %2F δεν μετατράπηκε σε κάθετο στη λειτουργία Full URL;
Η decodeURI διατηρεί σκόπιμα τις ακολουθίες διαφυγής δεσμευμένων χαρακτήρων όπως / ? # & και =, επειδή η αποκωδικοποίησή τους θα μπορούσε να αλλάξει τον τρόπο με τον οποίο χωρίζεται το URL σε μέρη. Χρησιμοποιήστε τη λειτουργία Component για να αποκωδικοποιήσετε κάθε ακολουθία διαφυγής.
Ποιοι χαρακτήρες δεν κωδικοποιούνται ποτέ;
Και οι δύο λειτουργίες αφήνουν αμετάβλητα τα A–Z, a–z, 0–9 και - _ . ! ~ * ' ( ). Η λειτουργία Full URL αφήνει επιπλέον αμετάβλητα τα ; , / ? : @ & = + $ και #.
Απόρρητο
Η κωδικοποίηση και η αποκωδικοποίηση εκτελούνται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας με τις ενσωματωμένες συναρτήσεις JavaScript. Το κείμενο και τα URL σας δεν μεταφορτώνονται, δεν αποθηκεύονται και δεν περιλαμβάνονται στα αναλυτικά στοιχεία.