About URL Encoding
Η κωδικοποίηση URL, γνωστή και ως ποσοστιαία κωδικοποίηση, είναι ένας μηχανισμός για την κωδικοποίηση πληροφοριών σε ένα Uniform Resource Identifier (URI). Χρησιμοποιείται για τη μετατροπή χαρακτήρων που δεν επιτρέπονται σε ένα URL σε μορφή που μπορεί να μεταδοθεί μέσω του Διαδικτύου. Αυτή η κωδικοποίηση αντικαθιστά μη ασφαλείς χαρακτήρες ASCII με "%" ακολουθούμενο από δύο δεκαεξαδικά ψηφία.
Κοινές χρήσεις της κωδικοποίησης URL
- Μορφοποίηση συμβολοσειρών ερωτήματος σε URLs
- Αποστολή δεδομένων φόρμας μέσω αιτημάτων HTTP (application/x-www-form-urlencoded)
- Δημιουργία έγκυρων URLs με ειδικούς χαρακτήρες ή διαστήματα
- Κωδικοποίηση μη ASCII χαρακτήρων σε URLs
- Πέρασμα σύνθετων παραμέτρων σε APIs και web services
Πώς λειτουργεί η κωδικοποίηση URL
Η κωδικοποίηση URL ακολουθεί αυτές τις αρχές:
- Οι αλφαριθμητικοί χαρακτήρες (A-Z, a-z, 0-9) παραμένουν αμετάβλητοι
- Ειδικοί χαρακτήρες όπως το διάστημα, ?, &, =, %, + μετατρέπονται στις αντίστοιχες ποσοστιαία κωδικοποιημένες μορφές τους
- Κάθε byte ενός χαρακτήρα κωδικοποιημένου σε UTF-8 κωδικοποιείται ξεχωριστά με ποσοστιαία κωδικοποίηση
- Ένας χαρακτήρας διαστήματος μπορεί να κωδικοποιηθεί ως "%20" ή "+" (σε παραμέτρους ερωτήματος)
- Οι δεσμευμένοι χαρακτήρες όπως /, :, ?, #, [ έχουν ειδικές σημασίες στα URLs και μπορεί να αντιμετωπίζονται διαφορετικά ανάλογα με το πλαίσιο τους
encodeURI vs encodeURIComponent
Η JavaScript παρέχει δύο συναρτήσεις για κωδικοποίηση URL:
- encodeURI: Κωδικοποιεί ένα πλήρες URI, διατηρώντας χαρακτήρες που είναι μέρος της σύνταξης URI (όπως /:?#[]@!$&'()*+,;=)
- encodeURIComponent: Κωδικοποιεί ένα συστατικό URI (όπως μια τιμή παραμέτρου ερωτήματος), κωδικοποιώντας περισσότερους χαρακτήρες συμπεριλαμβανομένων αυτών με ειδική σημασία σε ένα URI
Στις περισσότερες περιπτώσεις κατά την κωδικοποίηση εισόδου χρήστη ή παραμέτρων ερωτήματος, encodeURIComponent()
είναι η πιο ασφαλής επιλογή καθώς διασφαλίζει ότι όλοι οι ενδεχομένως προβληματικοί χαρακτήρες κωδικοποιούνται σωστά.
Κωδικοποίηση URL για Διεθνείς Χαρακτήρες
Οι σύγχρονοι περιηγητές κωδικοποιούν μη ASCII χαρακτήρες χρησιμοποιώντας κωδικοποίηση UTF-8 και στη συνέχεια ποσοστιαία κωδικοποιούν κάθε byte. Αυτό διασφαλίζει ότι διεθνείς χαρακτήρες, emojis και άλλα σύμβολα Unicode μπορούν να συμπεριληφθούν σωστά στα URLs. Για παράδειγμα, ο ιαπωνικός χαρακτήρας "日" πρώτα κωδικοποιείται σε UTF-8 ως τρία bytes (E6 97 A5) και στη συνέχεια ποσοστιαία κωδικοποιείται ως "%E6%97%A5".
Examples
Απλό κείμενο | Κωδικοποιημένο URL |
---|---|
Hello World | Hello%20World |
https://example.com/?q=search term | https%3A%2F%2Fexample.com%2F%3Fq%3Dsearch%20term |
50% off sale! | 50%25%20off%20sale%21 |
Smith & Jones LLC | Smith%20%26%20Jones%20LLC |