Κωδικοποιητής/Αποκωδικοποιητής URL
Πώς να Χρησιμοποιήσετε
- Εισάγετε κείμενο για κωδικοποίηση για χρήση URL, ή επικολλήστε κωδικοποιημένο κείμενο για αποκωδικοποίηση.
- Επιλέξτε λειτουργία Συστατικού για παραμέτρους, Πλήρους URL για δομή, ή Φόρμας για μορφή application/x-www-form-urlencoded.
- Δείτε το αποτέλεσμα σε πραγματικό χρόνο και αντιγράψτε την έξοδο. Πολλές γραμμές επεξεργάζονται ανεξάρτητα.
Σχετικά με αυτό το εργαλείο
Η κωδικοποίηση URL, επίσημα γνωστή ως ποσοστιαία κωδικοποίηση, είναι ο μηχανισμός μέσω του οποίου οι ειδικοί χαρακτήρες μετατρέπονται σε μορφή που μπορεί να μεταδοθεί με ασφάλεια μέσα σε Ενιαία Αναγνωριστικά Πόρων (URI). Ορισμένη στο RFC 3986, αυτή η προδιαγραφή εξασφαλίζει ότι κάθε χαρακτήρας σε μια διεύθυνση ιστού είναι σαφής και ερμηνεύεται σωστά από προγράμματα περιήγησης, διακομιστές και ενδιάμεσα συστήματα. Οι χαρακτήρες εκτός του μη δεσμευμένου συνόλου—γράμματα, ψηφία, παύλες, τελείες, κάτω παύλες και περισπωμένες—πρέπει να αναπαρίστανται ως σύμβολο ποσοστού ακολουθούμενο από δύο δεκαεξαδικά ψηφία που αντιστοιχούν στην τιμή byte του χαρακτήρα. Η έννοια των URI τυποποιήθηκε από τον Tim Berners-Lee το 1994 ως μέρος της θεμελιώδους αρχιτεκτονικής του Παγκόσμιου Ιστού. Επειδή η αρχική προδιαγραφή URI περιοριζόταν στο σύνολο χαρακτήρων ASCII (μόλις 128 χαρακτήρες), χρειαζόταν ένας μηχανισμός για την αναπαράσταση του τεράστιου εύρους χαρακτήρων που χρησιμοποιούνται στις ανθρώπινες γλώσσες παγκοσμίως. Η ποσοστιαία κωδικοποίηση κάλυψε αυτό το κενό μετατρέποντας κάθε byte ενός χαρακτήρα κωδικοποιημένου σε UTF-8 στη δεκαεξαδική αναπαράστασή του με πρόθεμα %. Καθώς ο ιστός έγινε πραγματικά παγκόσμιος, η ανάγκη για χαρακτήρες μη-ASCII σε διευθύνσεις ιστού οδήγησε στην ανάπτυξη των Διεθνοποιημένων Αναγνωριστικών Πόρων (IRI), που ορίζονται στο RFC 3987. Τα IRI επεκτείνουν τη σύνταξη URI για να επιτρέπουν χαρακτήρες Unicode απευθείας σε ορισμένα συστατικά, ενώ εξακολουθούν να βασίζονται στην ποσοστιαία κωδικοποίηση όταν η διεύθυνση πρέπει να μεταδοθεί μέσω πρωτοκόλλων που υποστηρίζουν μόνο ASCII. Τα σύγχρονα προγράμματα περιήγησης εμφανίζουν τα IRI σε αποκωδικοποιημένη μορφή για αναγνωσιμότητα, αλλά τα μετατρέπουν σε ποσοστιαία κωδικοποιημένα URI για αιτήματα δικτύου. Αυτό το εργαλείο υλοποιεί λειτουργίες κωδικοποίησης και αποκωδικοποίησης εξ ολοκλήρου στο πρόγραμμα περιήγησής σας χρησιμοποιώντας εγγενείς συναρτήσεις JavaScript, διασφαλίζοντας ότι τα δεδομένα σας δεν μεταδίδονται ποτέ σε κανέναν διακομιστή. Υποστηρίζει κωδικοποίηση σε επίπεδο συστατικού για μεμονωμένες τιμές ερωτήματος και πλήρη κωδικοποίηση URL που διατηρεί τους δομικούς οριοθέτες μιας διεύθυνσης ιστού.
Η Επιστήμη και Ιστορία της Ποσοστιαίας Κωδικοποίησης
Η ποσοστιαία κωδικοποίηση προέκυψε από έναν θεμελιώδη περιορισμό του πρώιμου διαδικτύου: τον περιορισμό ASCII. Όταν ο Tim Berners-Lee σχεδίασε τη σύνταξη URL το 1994, η προδιαγραφή Ενιαίου Εντοπιστή Πόρων (RFC 1738) περιόριζε τις διευθύνσεις ιστού σε ένα μικρό υποσύνολο χαρακτήρων ASCII. Αυτό ήταν λογικό για το κυρίως αγγλόφωνο διαδίκτυο των αρχών του 1990, αλλά σήμαινε ότι κάθε χαρακτήρας εκτός αυτού του ασφαλούς συνόλου χρειαζόταν έναν μηχανισμό αναπαράστασης. Η λύση ήταν κομψά απλή: αναπαράσταση κάθε μη ασφαλούς byte ως σημείο ποσοστού ακολουθούμενο από τη διψήφια δεκαεξαδική τιμή του. Ένα κενό (τιμή byte 32, hex 20) γίνεται %20, ένα ερωτηματικό (τιμή 63, hex 3F) γίνεται %3F. Αυτό το σχήμα μπορούσε να αναπαραστήσει οποιαδήποτε τιμή byte από 00 έως FF, καθιστώντας το ικανό να κωδικοποιήσει οποιονδήποτε χαρακτήρα. Η εισαγωγή του UTF-8 ως τυπικής κωδικοποίησης χαρακτήρων του ιστού μετεσχημάτισε την ποσοστιαία κωδικοποίηση από ένα απλό σχήμα αντιστοίχισης bytes σε ένα πολύ-byte σύστημα κωδικοποίησης. Ένας μόνο κινεζικός χαρακτήρας μπορεί να απαιτεί τρία bytes σε UTF-8, παράγοντας τρεις διαδοχικές τριάδες. Το σημείο ευρώ καταλαμβάνει τρία bytes (E2, 82, AC) και γίνεται %E2%82%AC. Γι αυτό κωδικοποιημένες URLs με μη λατινικό κείμενο φαίνονται δραματικά μεγαλύτερες. Το RFC 3986, δημοσιευμένο το 2005, βελτίωσε την αρχική προδιαγραφή URL και τυποποίησε τους σύγχρονους κανόνες ποσοστιαίας κωδικοποίησης. Καθιέρωσε την έννοια δεσμευμένων και μη δεσμευμένων συνόλων χαρακτήρων, αποσαφηνίζοντας ποιοι χρησιμεύουν ως δομικοί οριοθέτες. Αυτή η διάκριση εξηγεί γιατί υπάρχουν δυο συναρτήσεις κωδικοποίησης στη JavaScript: η encodeURI διατηρεί δομικούς χαρακτήρες για πλήρεις URLs, ενώ η encodeURIComponent κωδικοποιεί τα πάντα για ασφαλή ενσωμάτωση. Η προδιαγραφή εισήγαγε επίσης την αρχή της κανονικοποίησης, ορίζοντας πότε δυο διαφορετικά κωδικοποιημένες URLs πρέπει να θεωρούνται ισοδύναμες.
Μεθοδολογία
Η κωδικοποίηση URL αντικαθιστά μη ασφαλείς χαρακτήρες ASCII με ένα σημείο ποσοστού (%) ακολουθούμενο από δυο δεκαεξαδικά ψηφία που αναπαριστούν την τιμή byte του χαρακτήρα. Για παράδειγμα, ένα κενό γίνεται %20 (hex 20 = δεκαδικό 32), ένα ampersand γίνεται %26 και ένα σημείο συν γίνεται %2B. Η κωδικοποίηση ακολουθεί το RFC 3986, που ορίζει το σύνολο μη δεσμευμένων χαρακτήρων που δεν χρειάζονται ποτέ κωδικοποίηση: κεφαλαία και πεζά γράμματα (A-Z, a-z), ψηφία (0-9) και τέσσερις ειδικοί χαρακτήρες (παύλα, τελεία, κάτω παύλα, περισπωμένη). Αυτό το εργαλείο παρέχει δυο λειτουργίες κωδικοποίησης που αντιστοιχίζονται απευθείας στις εγγενείς συναρτήσεις της JavaScript. Η λειτουργία Συστατικού χρησιμοποιεί encodeURIComponent(), που κωδικοποιεί κάθε χαρακτήρα εκτός από το μη δεσμευμένο σύνολο, καθιστώντας το ιδανικό για τιμές παραμέτρων ερωτήματος όπου χαρακτήρες όπως & και = πρέπει να γίνουν escape. Η λειτουργία Πλήρους URL χρησιμοποιεί encodeURI(), που επιπλέον διατηρεί δομικούς χαρακτήρες URL όπως : / ? # [ ] @ ! $ & ' ( ) * + , ; = ώστε μια πλήρης URL να παραμένει λειτουργική μετά την κωδικοποίηση. Για διεθνείς χαρακτήρες και emojis, το εργαλείο μετατρέπει πρώτα το κείμενο στην αναπαράσταση bytes UTF-8 του, μετά κωδικοποιεί κάθε byte ξεχωριστά. Ένας μόνο χαρακτήρας Unicode όπως το σημείο ευρώ μπορεί να παράγει πολλαπλές κωδικοποιημένες τριάδες (%E2%82%AC) επειδή το UTF-8 χρησιμοποιεί κωδικοποίηση μεταβλητού μήκους από ένα έως τέσσερα bytes ανά χαρακτήρα.
Κατανόηση των Αποτελεσμάτων σας
Χρησιμοποιείτε τη λειτουργία Συστατικού (encodeURIComponent) οπότε κωδικοποιείτε μια τιμή που θα τοποθετηθεί μετά από ένα σημείο ισότητας σε μια συμβολοσειρά ερωτήματος. Αυτό εξασφαλίζει ότι χαρακτήρες όπως &, = και # μέσα στην τιμή σας δεν σπάνε κατά λάθος τη δομή της URL. Χρησιμοποιείτε τη λειτουργία Πλήρους URL (encodeURI) όταν έχετε μια πλήρη URL και θέλετε να κωδικοποιήσετε μόνο κενά και χαρακτήρες μη-ASCII διατηρώντας ανέπαφους τους δομικούς οριοθέτες. Αν δείτε %25 στην έξοδο σας, σημαίνει ότι το σημείο ποσοστού κωδικοποιήθηκε, κάτι που τυπικά υποδεικνύει διπλή κωδικοποίηση—η είσοδος ήταν ήδη ποσοστιαία κωδικοποιημένη πριν την επεξεργαστείτε. Η αποκωδικοποίηση τέτοιων συμβολοσειρών δυο φορές θα ανακτήσει το αρχικό κείμενο. Αυτό είναι ένα από τα πιο κοινά σφάλματα κωδικοποίησης URL σε εφαρμογές ιστού και APIs. Η αποκωδικοποίηση είναι χρήσιμη για αναγνωσιμότητα URLs κατά την αποσφαλμάτωση, ανάλυση αρχείων καταγραφής διακομιστή ή επιθεώρηση παραμέτρων ερωτήματος με κωδικοποιημένες τιμές. Τα διεθνή ονόματα τομέα (IDN) χρησιμοποιούν διαφορετική κωδικοποίηση που ονομάζεται Punycode αντί ποσοστιαίας κωδικοποίησης, οπότε τα ονόματα τομέα με μη λατινικούς χαρακτήρες απαιτούν ξεχωριστό χειρισμό. Κωδικοποιείτε πάντα την είσοδο χρήστη πριν την εισάγετε σε URLs για αποτροπή επιθέσεων ένεσης.
Πρακτικά Παραδείγματα
Παράμετρος ερωτήματος αναζήτησης: η κωδικοποίηση 'coffee & tea' σε λειτουργία Συστατικού παράγει 'coffee%20%26%20tea', κάνοντας escape με ασφάλεια τόσο τα κενά όσο και το ampersand ώστε ο server να λάβει το κυριολεκτικό κείμενο. Υποβολή φόρμας: ένας χρήστης εισάγει 'price=50$', που πρέπει να κωδικοποιηθεί ως 'price%3D50%24' για αποτροπή ερμηνείας του σημείου ισότητας ως διαχωριστή. URLs ανακατεύθυνσης API: κατά τη μεταβίβαση μιας URL callback όπως 'https://app.com/auth?token=abc' ως παράμετρο σε άλλη URL, η λειτουργία Συστατικού κωδικοποιεί ολόκληρο το callback συμπεριλαμβανομένης της δικής του συμβολοσειράς ερωτήματος. Πολύγλωσσο περιεχόμενο: η κωδικοποίηση ιαπωνικού κειμένου παράγει ακολουθίες bytes UTF-8 ως ποσοστιαίες τριάδες. Αποκωδικοποίηση αποσφαλμάτωσης: επικολλήστε μια πλήρη URL από αρχεία καταγραφής server και αποκωδικοποιήστε την για άμεση προβολή του αρχικού ερωτήματος.
Συμβουλές και Βέλτιστες Πρακτικές
Χρησιμοποιείτε πάντα τη λειτουργία Συστατικού κατά την κωδικοποίηση μεμονωμένων τιμών παραμέτρων ερωτήματος. Η λειτουργία Πλήρους URL αφήνει δομικούς χαρακτήρες όπως & και = ακωδικοποίητους, πράγμα που θα σπάσει την URL σας αν αυτοί οι χαρακτήρες εμφανίζονται στα δεδομένα αντί ως οριοθέτες. Αποφύγετε τη διπλή κωδικοποίηση ελέγχοντας αν η είσοδος σας είναι ήδη ποσοστιαία κωδικοποιημένη. Αν βλέπετε ακολουθίες όπως %20 η %26 στην είσοδο, αποκωδικοποιήστε πρώτα πριν επανακωδικοποιήσετε για αποτροπή στοιβάγματος (όπου %20 γίνεται %2520). Όταν κατασκευάζετε URLs μέσω κωδικά, κωδικοποιήστε κάθε τιμή παραμέτρου ξεχωριστά και μετά συναρμολογήστε την πλήρη URL. Μην κωδικοποιείτε πότε ολόκληρη τη συμβολοσειρά URL ταυτόχρονα, καθώς αυτό θα καταστρέψει τους δομικούς χαρακτήρες. Για αποσφαλμάτωση κλήσεων API, επικολλήστε την πλήρη κωδικοποιημένη URL σε λειτουργία αποκωδικοποίησης για γρήγορη ανάγνωση όλων των τιμών παραμέτρων. Αυτό είναι ιδιαίτερα χρήσιμο κατά την αντιμετώπιση προβλημάτων με URLs webhooks η ανακατευθύνσεις OAuth.
Κοινές Κωδικοποιήσεις URL
| Χαρακτήρας | Όνομα | Κωδικοποιημένο | Φόρμα |
|---|---|---|---|
| (space) | Space | %20 | + |
| ! | Exclamation | %21 | %21 |
| # | Hash | %23 | %23 |
| $ | Dollar | %24 | %24 |
| % | Percent | %25 | %25 |
| & | Ampersand | %26 | %26 |
| ' | Apostrophe | %27 | %27 |
| + | Plus | %2B | %2B |
| , | Comma | %2C | %2C |
| / | Slash | %2F | %2F |
| : | Colon | %3A | %3A |
| ; | Semicolon | %3B | %3B |
| = | Equals | %3D | %3D |
| ? | Question | %3F | %3F |
| @ | At sign | %40 | %40 |
Όλοι οι υπολογισμοί γίνονται τοπικά στο πρόγραμμα περιήγησής σας. Δεν αποστέλλονται δεδομένα σε κανέναν διακομιστή.