Κωδικοποίηση URL
Ορισμένοι χαρακτήρες δεν μπορούν να εμφανιστούν σε διευθύνσεις URL (π.χ. κενά), άλλοι έχουν ειδικές σημασίες σε διευθύνσεις URL. Πρέπει να μετατρέψουμε ειδικούς χαρακτήρες για να συμμορφωθούμε με τη σύνταξη που ορίζεται στην προδιαγραφή URI W3 (RFC 3986). Αυτό σημαίνει ότι οι διευθύνσεις URL πρέπει να περιέχουν μόνο ένα υποσύνολο ενός ειδικού χαρακτήρα ASCII: τα γράμματα και τους αριθμούς που γνωρίζουμε, καθώς και ορισμένους δεσμευμένους χαρακτήρες που χρησιμοποιούνται ως χαρακτήρες ελέγχου στη διεύθυνση URL.
Επεξεργασία κωδικοποίησης URL σε JavaScript
Στη JavaScript, τόσο οι ενσωματωμένες συναρτήσεις encodeURIComponent() όσο και encodeURI() μπορούν να κωδικοποιηθούν με URL, αντικαθιστώντας τους δεσμευμένους χαρακτήρες στη διεύθυνση URL με τους κωδικοποιημένους χαρακτήρες UTF-8.
Τα περισσότερα προγράμματα περιήγησης κωδικοποιούν αυτόματα τις διευθύνσεις URL, όπως η κωδικοποίηση διαστημάτων στο %20, αλλά υπάρχουν πάντα ορισμένες εξαιρέσεις. Ευτυχώς, τα προγράμματα περιήγησης παρέχουν ενσωματωμένες λειτουργίες κωδικοποίησης και αποκωδικοποίησης URL: encodeURI, encodeURIComponent και decodeURI, decodeURIComponent. Το ερώτημα είναι πώς να χρησιμοποιήσετε αυτές τις λειτουργίες και ποια είναι η διαφορά μεταξύ τους.
encodeURI()
Η κωδικοποίηση URL μιας συμβολοσειράς είναι εύκολη, απλώς καλέστε το encodeURI και περάστε τη συμβολοσειρά που θέλετε να κωδικοποιήσετε. Αυτή η συνάρτηση επιστρέφει την κωδικοποιημένη διεύθυνση URL.
decodeURI()
Αυτή η συνάρτηση αποκωδικοποιεί και καλεί τη συνάρτηση decodeURI, περνώντας στην κωδικοποιημένη συμβολοσειρά και, στη συνέχεια, επιστρέφει την αποκωδικοποιημένη κανονική συμβολοσειρά.
encodeURIComponent()
Η συνάρτηση encodeURIComponent θα πρέπει να χρησιμοποιείται για την κωδικοποίηση των τιμών παραμέτρων της συμβολοσειράς ερωτήματος. Η διαφορά μεταξύ του encodeURI και του encodeURIComponent είναι ότι το encodeURIComponent κωδικοποιεί ολόκληρη τη συμβολοσειρά, ενώ το encodeURI αγνοεί το πρόθεμα πρωτοκόλλου («http://») καθώς και το όνομα τομέα. Το encodeURICcomponent έχει σχεδιαστεί για να κωδικοποιεί τα πάντα, ενώ το encodeURI αγνοεί το τμήμα του ονόματος τομέα της διεύθυνσης URL. ΌτανΌταν θέλετε να κωδικοποιήσετε την τιμή της παραμέτρου στη διεύθυνση URL, επιλέξτε τη συνάρτηση encodeURIComponent。
decodeURIComponent()
Η συνάρτηση decodeURIComponent θα αποκωδικοποιήσει την κωδικοποιημένη συμβολοσειρά της συνάρτησης encodeURIComponent και θα την επαναφέρει στο κανονικό της περιεχόμενο.
Αναθεώρηση:
|