Κωδικοποίηση και αποκωδικοποίηση URL
Δωρεάν κωδικοποίηση και αποκωδικοποίηση URL. Κωδικοποιήστε παραμέτρους ή πλήρη URL με percent-encoding, αποκωδικοποιήστε ακολουθίες %XX και το + ως κενό.
Πώς να χρησιμοποιήσετε την κωδικοποίηση και αποκωδικοποίηση URL
- Επιλέξτε Κωδικοποίηση για να μετατρέψετε κείμενο σε μορφή ασφαλή για URL ή Αποκωδικοποίηση για να επαναφέρετε κείμενο με percent-encoding σε ευανάγνωστους χαρακτήρες.
- Στην κωδικοποίηση, διαλέξτε λειτουργία: Στοιχείο για μία τιμή (όπως μια παράμετρο ερωτήματος ή ένα τμήμα διαδρομής) ή Πλήρες URL για να κωδικοποιήσετε μια ολόκληρη διεύθυνση διατηρώντας τη δομή της.
- Όταν αποκωδικοποιείτε δεδομένα από φόρμα HTML ή συμβολοσειρά ερωτήματος, ενεργοποιήστε την επιλογή Το + ως κενό ώστε τα σύμβολα
+να γίνονται κενά. - Επικολλήστε το κείμενό σας και αντιγράψτε το αποτέλεσμα. Αν μια ακολουθία ποσοστού δεν είναι έγκυρη, το εργαλείο αναφέρει σφάλμα αντί να μαντεύει.
Τι είναι η κωδικοποίηση URL;
Τα URL επιτρέπεται να περιέχουν μόνο ένα περιορισμένο σύνολο χαρακτήρων ASCII. Ορισμένοι χαρακτήρες, όπως τα /, ?, #, & και =, είναι δεσμευμένοι, επειδή χωρίζουν τα μέρη μιας διεύθυνσης: τη διαδρομή, τη συμβολοσειρά ερωτήματος και το τμήμα (fragment). Άλλοι, όπως τα κενά, τα εισαγωγικά, τα γράμματα με τόνους ή τα emoji, απλώς δεν επιτρέπονται. Η κωδικοποίηση URL, που λέγεται και percent-encoding, λύνει και τα δύο προβλήματα αντικαθιστώντας κάθε προβληματικό byte με ένα % ακολουθούμενο από δύο δεκαεξαδικά ψηφία.
Το κείμενο μετατρέπεται πρώτα σε byte UTF-8 και κάθε byte κωδικοποιείται χωριστά. Ένα κενό γίνεται %20, το σύμβολο & γίνεται %26, το é (δύο byte σε UTF-8) γίνεται %C3%A9 και το emoji 😀 (τέσσερα byte) γίνεται %F0%9F%98%80. Οι ελεύθεροι χαρακτήρες, δηλαδή τα γράμματα, τα ψηφία και τα - _ . ~, δεν χρειάζονται ποτέ κωδικοποίηση. Τα ελληνικά γράμματα κωδικοποιούνται σε δύο byte το καθένα: το «α» γίνεται %CE%B1.
Λειτουργία «Στοιχείο» και λειτουργία «Πλήρες URL»
Η επιλογή της σωστής λειτουργίας είναι η σημαντικότερη απόφαση, και το λάθος εδώ είναι κλασική πηγή σφαλμάτων.
Η λειτουργία Στοιχείο δουλεύει όπως η encodeURIComponent της JavaScript. Κωδικοποιεί κάθε δεσμευμένο χαρακτήρα, ώστε το αποτέλεσμα να τοποθετείται με ασφάλεια μέσα σε ένα μέρος ενός URL. Χρησιμοποιήστε την για τιμές παραμέτρων ερωτήματος, τμήματα διαδρομής ή οτιδήποτε πληκτρολόγησε ένας χρήστης. Για παράδειγμα, ο όρος αναζήτησης rock & roll γίνεται rock%20%26%20roll. Αν δεν κωδικοποιούσατε το &, ο διακομιστής θα διάβαζε το roll ως αρχή νέας παραμέτρου.
Η λειτουργία Πλήρες URL δουλεύει όπως η encodeURI. Θεωρεί ότι η είσοδος είναι ήδη πλήρης διεύθυνση και διατηρεί τους χαρακτήρες που της δίνουν δομή, όπως τα : / ? # & και =, ενώ κωδικοποιεί τα κενά και τους χαρακτήρες εκτός ASCII. Χρησιμοποιήστε την για να καθαρίσετε μια διεύθυνση όπως https://example.com/café menu?q=tea σε https://example.com/caf%C3%A9%20menu?q=tea. Μην τη χρησιμοποιείτε σε μεμονωμένες τιμές: ένα & μέσα σε μια τιμή θα έμενε ακωδικοποίητο και θα χαλούσε τη συμβολοσειρά ερωτήματος.
Ένας καλός κανόνας: χτίστε τα URL από κομμάτια, κωδικοποιήστε κάθε τιμή στη λειτουργία Στοιχείο και χρησιμοποιήστε το Πλήρες URL μόνο για διευθύνσεις που λαμβάνετε ήδη συναρμολογημένες.
Το σύμβολο + και η κωδικοποίηση φορμών
Οι φόρμες HTML που υποβάλλονται με application/x-www-form-urlencoded κωδικοποιούν τα κενά ως + αντί για %20. Γι’ αυτό τα URL αναζήτησης μοιάζουν συχνά με ?q=hello+world. Η τυπική αποκωδικοποίηση ποσοστού αφήνει το + ως έχει, επειδή σε μια διαδρομή το συν είναι απλώς συν. Όταν αποκωδικοποιείτε συμβολοσειρά ερωτήματος ή δεδομένα φόρμας, ενεργοποιήστε την επιλογή Το + ως κενό για να πάρετε hello world. Αφήστε την απενεργοποιημένη για διαδρομές και για τιμές όπου μετράει το κυριολεκτικό +, όπως αριθμούς τηλεφώνου ή δεδομένα Base64. Ένα πραγματικό σύμβολο συν στα δεδομένα φόρμας αποστέλλεται ως %2B, οπότε αποκωδικοποιείται σωστά και στις δύο περιπτώσεις.
Απόρρητο
Η κωδικοποίηση και η αποκωδικοποίηση εκτελούνται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας. Τίποτα από όσα επικολλάτε, ακόμη και URL που ίσως περιέχουν διακριτικά (tokens), αναγνωριστικά συνεδρίας ή προσωπικά δεδομένα, δεν στέλνεται σε διακομιστή ούτε αποθηκεύεται.
Συχνές ερωτήσεις
Γιατί η αποκωδικοποίηση αποτυγχάνει με σφάλμα «μη έγκυρης κωδικοποίησης»;
Ένα % πρέπει να ακολουθείται από ακριβώς δύο δεκαεξαδικά ψηφία και τα byte που προκύπτουν πρέπει να σχηματίζουν έγκυρο UTF-8. Συμβολοσειρές όπως 100%, %G1 ή μια κομμένη ακολουθία όπως %E2%82 δεν μπορούν να αποκωδικοποιηθούν αξιόπιστα, γι’ αυτό το εργαλείο αναφέρει το πρόβλημα αντί να παράγει λανθασμένο κείμενο. Για να συμπεριλάβετε κυριολεκτικό σύμβολο ποσοστού, κωδικοποιήστε το ως %25.
Ποια είναι η διαφορά ανάμεσα στο %20 και στο +;
Και τα δύο μπορούν να παριστάνουν κενό, αλλά σε διαφορετικά περιβάλλοντα. Το %20 ισχύει παντού σε ένα URL. Το + σημαίνει κενό μόνο σε συμβολοσειρές ερωτήματος με κωδικοποίηση φόρμας· αλλού είναι κυριολεκτικό σύμβολο συν.
Να κωδικοποιήσω ένα ολόκληρο URL στη λειτουργία Στοιχείο;
Μόνο αν ολόκληρο το URL είναι από μόνο του τιμή μέσα σε άλλο URL, για παράδειγμα μια παράμετρος redirect=. Τότε η λειτουργία Στοιχείο είναι ακριβώς η σωστή: το https://a.com/?x=1 γίνεται https%3A%2F%2Fa.com%2F%3Fx%3D1.
Γιατί το κείμενό μου κωδικοποιήθηκε δύο φορές;
Η διπλή κωδικοποίηση συμβαίνει όταν κείμενο που είναι ήδη κωδικοποιημένο κωδικοποιείται ξανά, μετατρέποντας το %20 σε %2520. Αποκωδικοποιήστε μία φορά για έλεγχο και φροντίστε κάθε τιμή να κωδικοποιείται μόνο τη στιγμή που εισάγεται στο URL.
Η κωδικοποίηση URL κρύβει ή προστατεύει δεδομένα;
Όχι. Το percent-encoding είναι πλήρως αναστρέψιμο και δεν παρέχει καμία ασφάλεια. Οι ευαίσθητες τιμές σε URL μπορεί να καταλήξουν στο ιστορικό του προγράμματος περιήγησης και στα αρχεία καταγραφής του διακομιστή, γι’ αυτό αποφύγετε να βάζετε μυστικά σε URL.
Σχετικά εργαλεία
- Κωδικοποίηση και αποκωδικοποίηση Base64 Δωρεάν κωδικοποίηση και αποκωδικοποίηση Base64 με πλήρη υποστήριξη UTF-8 και επιλογή base64url. Λειτουργεί στο πρόγραμμα περιήγησής σας.
- Μορφοποίηση και επικύρωση JSON Δωρεάν μορφοποίηση και επικύρωση JSON που κάνει beautify, minify και έλεγχο του JSON στο πρόγραμμα περιήγησής σας, με συντακτικά σφάλματα ανά γραμμή και στήλη.