Μετάβαση στο περιεχόμενο

Κωδικοποιητής URL: Διαφυγή Ειδικών Χαρακτήρων σε URLs Online Δωρεάν

Δωρεάν εργαλείο διαφυγής URL string για άμεση κωδικοποίηση ειδικών χαρακτήρων. Μετατρέψτε κενά, Unicode και σύμβολα σε μορφή percent-encoded. Ιδανικό για APIs, web φόρμες και διεθνή URLs. Δοκιμάστε τώρα!

Εργαλείο Διαφυγής URL Συμβολοσειράς

Υπολογιστής φόρτωσης...
📚

Τεκμηρίωση

Κωδικοποίηση URL: τι είναι και πώς λειτουργεί

Η κωδικοποίηση URL, γνωστή και ως κωδικοποίηση ποσοστού, είναι ένας τρόπος αναπαράστασης χαρακτήρων σε μια διαδικτυακή διεύθυνση χρησιμοποιώντας μόνο ένα μικρό σύνολο ασφαλών χαρακτήρων ASCII. Λειτουργεί αντικαθιστώντας έναν μη ασφαλή χαρακτήρα με ένα σύμβολο % ακολουθούμενο από δύο δεκαεξαδικά ψηφία. Αυτό το εργαλείο διαφυγής συμβολοσειρών URL κωδικοποιεί το κείμενο με τον ίδιο τρόπο όπως η ενσωματωμένη συνάρτηση encodeURIComponent της JavaScript.

Γιατί χρειάζονται κωδικοποίηση τα URL

Ένα URL επιτρέπεται να περιέχει μόνο ένα περιορισμένο σύνολο χαρακτήρων: γράμματα, ψηφία και λίγα σημεία στίξης. Τα κενά, τα τονισμένα γράμματα, οι χαρακτήρες μη λατινικών αλφαβήτων και σύμβολα όπως τα & ή = μπορούν να καταστρέψουν ένα URL ή να αλλάξουν τη σημασία του, αν εμφανίζονται σε αυτό χωρίς κωδικοποίηση. Για παράδειγμα, ένα κενό μέσα σε έναν σύνδεσμο μπορεί να κάνει ένα πρόγραμμα περιήγησης ή έναν διακομιστή να διαβάσει το URL ως δύο ξεχωριστά τμήματα. Η κωδικοποίηση ποσοστού αντικαθιστά αυτούς τους χαρακτήρες με έναν κωδικό που όλα τα προγράμματα περιήγησης και οι διακομιστές μπορούν να διαβάσουν με τον ίδιο τρόπο.

Χαρακτήρες που αυτό το εργαλείο αφήνει αμετάβλητους

Αυτό το εργαλείο δεν τροποποιεί ποτέ τους ακόλουθους χαρακτήρες. Περνούν απευθείας:

  • Κεφαλαία και πεζά γράμματα: A–Z, a–z
  • Ψηφία: 0–9
  • Τα σημεία στίξης - . _ ~ ! * ' ( )

Κάθε άλλος χαρακτήρας κωδικοποιείται με κωδικοποίηση ποσοστού, όπως:

  • Ο χαρακτήρας του διαστήματος και σημεία στίξης όπως : / ? # [ ] @ $ & + , ; =
  • Τονισμένα γράμματα και κάθε άλλος χαρακτήρας που δεν είναι ASCII ή είναι χαρακτήρας Unicode
  • Ένας κυριολεκτικός χαρακτήρας %, ο οποίος γίνεται πάντα %25, ακόμη και αν αποτελούσε ήδη μέρος μιας ακολουθίας κωδικοποιημένης με ποσοστό

Ορισμένοι γενικοί οδηγοί για τη σύνταξη URL ομαδοποιούν τα ! * ' ( και ) μαζί με άλλα σημεία στίξης ως χαρακτήρες που «ενδέχεται να χρειάζονται κωδικοποίηση» σε ορισμένα περιβάλλοντα. Το συγκεκριμένο εργαλείο δεν τους κωδικοποιεί, επειδή ακολουθεί το σύνολο κανόνων της encodeURIComponent, όπου θεωρούνται ασφαλείς.

Πώς υπολογίζεται μια συμβολοσειρά κωδικοποιημένη με ποσοστό (τύπος)

Το εργαλείο ελέγχει κάθε χαρακτήρα της εισόδου ξεχωριστά και εφαρμόζει τον εξής κανόνα:

  1. Αν ο χαρακτήρας είναι ένας από τους αμετάβλητους χαρακτήρες που αναφέρονται παραπάνω, διατηρείται ως έχει.
  2. Διαφορετικά, ο χαρακτήρας μετατρέπεται στην ακολουθία byte UTF-8. Τα τονισμένα λατινικά γράμματα, τα ελληνικά, τα κυριλλικά και τα αραβικά γράμματα χρησιμοποιούν δύο byte. Οι κινεζικοί, ιαπωνικοί και κορεατικοί χαρακτήρες χρησιμοποιούν τρία. Τα emoji χρησιμοποιούν τέσσερα.
  3. Κάθε byte γράφεται ως διψήφιος δεκαεξαδικός αριθμός.
  4. Μπροστά από κάθε ζεύγος δεκαεξαδικών ψηφίων τοποθετείται ένα %.
  5. Τα αποτελέσματα ενώνονται με τη σειρά για να σχηματίσουν την κωδικοποιημένη συμβολοσειρά.

Λυμένο παράδειγμα

Είσοδος: Jürgen & Björk

Επεξεργασία χαρακτήρα προς χαρακτήρα:

ΧαρακτήραςΑποτέλεσμα
JJ (αμετάβλητος)
ü%C3%BC (byte UTF-8 0xC3, 0xBC)
rgenrgen (αμετάβλητο)
(διάστημα)%20
&%26
(διάστημα)%20
BjBj (αμετάβλητο)
ö%C3%B6 (byte UTF-8 0xC3, 0xB6)
rkrk (αμετάβλητο)

Έξοδος: J%C3%BCrgen%20%26%20Bj%C3%B6rk

Ένα δεύτερο παράδειγμα δείχνει στην πράξη το σύνολο των αμετάβλητων χαρακτήρων. Η κωδικοποίηση της συμβολοσειράς -_.!~*'() παράγει -_.!~*'(), ακριβώς το ίδιο κείμενο, επειδή κάθε χαρακτήρας της ανήκει στο σύνολο των μη δεσμευμένων χαρακτήρων. Η κωδικοποίηση της συμβολοσειράς 100% παράγει 100%25, επειδή το σύμβολο % δεν είναι ασφαλής χαρακτήρας.

Αποκωδικοποίηση συμβολοσειράς κωδικοποιημένης με ποσοστό

Η αποκωδικοποίηση αντιστρέφει τη διαδικασία: κάθε ακολουθία %XX διαβάζεται ως δεκαεξαδικό byte, τα byte ομαδοποιούνται ξανά στον αρχικό χαρακτήρα UTF-8 και ο χαρακτήρας αντικαθιστά την ακολουθία. Για παράδειγμα, το %C3%BC αποκωδικοποιείται ξανά σε ü, ενώ το %20 αποκωδικοποιείται σε κενό. Αυτό το εργαλείο κωδικοποιεί μόνο· για την αντιστροφή της διαδικασίας χρειάζεται ξεχωριστός αποκωδικοποιητής.

Συνήθεις χρήσεις

Η κωδικοποίηση ποσοστού χρησιμοποιείται κάθε φορά που κείμενο το οποίο πληκτρολόγησε ένας χρήστης, και όχι κείμενο που έγραψε προγραμματιστής, πρέπει να γίνει μέρος ενός URL:

  • Πλαίσια αναζήτησης που τοποθετούν τον όρο αναζήτησης στη γραμμή διεύθυνσης, όπως το ?q=shoes%20%26%20bags
  • Παράμετροι ερωτήματος που περιέχουν ονόματα, διευθύνσεις ή άλλα δεδομένα χρήστη
  • Σύνδεσμοι προς σελίδες με τίτλους σε γλώσσες που χρησιμοποιούν τονισμένα γράμματα ή μη λατινικά αλφάβητα
  • Αιτήματα API που μεταβιβάζουν διακριτικά ή αναγνωριστικά ως μέρος του URL

Παραδείγματα κώδικα

1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
4

Η quote της Python αφήνει πάντα αμετάβλητα τα γράμματα, τα ψηφία και τα - . _ ~. Οι πέντε επιπλέον χαρακτήρες ! * ' ( ) πρέπει να δηλωθούν στο safe για να ταιριάζουν με αυτό το εργαλείο. Χωρίς αυτούς, η quote επιστρέφει %21 %2A %27 %28 %29.

Ιστορία

Η ιδέα της κωδικοποίησης μη ασφαλών χαρακτήρων σε ένα URL ανάγεται στο RFC 1738 του (4.410 cm) 1994, ένα από τα πρώτα έγγραφα που καθόρισαν τη μορφή των URL. Το RFC 3986, που δημοσιεύτηκε το 2005, επικαιροποίησε τους κανόνες και όρισε επίσημα το σύνολο των «μη δεσμευμένων» χαρακτήρων που δεν χρειάζονται ποτέ κωδικοποίηση. Η encodeURIComponent, η συνάρτηση JavaScript στην οποία βασίζεται αυτό το εργαλείο, ακολουθεί ένα ελαφρώς ευρύτερο σύνολο μη δεσμευμένων χαρακτήρων από το RFC 3986: αφήνει επίσης τα ! * ' ( και ) χωρίς κωδικοποίηση, σύμφωνα με παλαιότερη έκδοση της προδιαγραφής URI.

Συχνές ερωτήσεις

Ποια είναι η διαφορά μεταξύ κωδικοποίησης URL και διαφυγής URL; Είναι το ίδιο πράγμα. Και οι δύο όροι περιγράφουν την κωδικοποίηση ποσοστού, κατά την οποία ένας χαρακτήρας αντικαθίσταται από % και δύο δεκαεξαδικά ψηφία.

Γιατί τα !, *, ', ( και ) παραμένουν αμετάβλητα σε αυτό το εργαλείο; Αυτό το εργαλείο χρησιμοποιεί την encodeURIComponent, η οποία θεωρεί αυτούς τους πέντε χαρακτήρες ασφαλείς και τους αφήνει ακριβώς όπως πληκτρολογήθηκαν. Άλλες συναρτήσεις κωδικοποίησης και ορισμένοι διακομιστές ενδέχεται να εξακολουθούν να απαιτούν την κωδικοποίησή τους, επομένως πρέπει να ελεγχθεί το σύστημα προορισμού αν αυτό προκαλεί πρόβλημα.

Ποια είναι η διαφορά μεταξύ των %20 και + για ένα κενό; Και τα δύο αναπαριστούν ένα κενό. Το %20 είναι η γενική κωδικοποίηση ποσοστού για ένα κενό. Το σύμβολο + είναι ειδική περίπτωση που χρησιμοποιείται μόνο μέσα σε δεδομένα application/x-www-form-urlencoded, τη μορφή που χρησιμοποιούν οι υποβολές φορμών HTML, και όχι αυτό το εργαλείο.

Αποκωδικοποιεί αυτό το εργαλείο κείμενο που είναι ήδη κωδικοποιημένο; Όχι. Κωδικοποιεί μόνο. Αν η είσοδος περιέχει ήδη ένα σύμβολο %, το % αντιμετωπίζεται ως κυριολεκτικός χαρακτήρας και γίνεται %25 στην έξοδο, αντί να παραμείνει αμετάβλητο.

Πώς αντιμετωπίζονται οι μη λατινικοί χαρακτήρες, όπως το κινεζικό ή το αραβικό κείμενο; Κάθε χαρακτήρας μετατρέπεται πρώτα στην ακολουθία byte UTF-8 και στη συνέχεια κάθε byte κωδικοποιείται με κωδικοποίηση ποσοστού. Ένας κινεζικός χαρακτήρας χρησιμοποιεί τρία byte, επομένως παράγει τρεις ομάδες %XX. Ένα αραβικό γράμμα χρησιμοποιεί δύο byte, επομένως παράγει δύο.

Πότε αρνείται το εργαλείο να κωδικοποιήσει κείμενο; Μόνο όταν το κείμενο περιέχει το ένα μισό ενός ζεύγους υποκατάστασης. Ένα ζεύγος υποκατάστασης είναι ο διμερής κωδικός που αποθηκεύει έναν χαρακτήρα πάνω από το U+FFFF, όπως ένα emoji. Ένα μεμονωμένο μισό δεν έχει έγκυρη μορφή UTF-8, επομένως το εργαλείο εμφανίζει σφάλμα αντί για αποτέλεσμα. Η συνηθισμένη πληκτρολόγηση δεν μπορεί να δημιουργήσει κάτι τέτοιο· συνήθως προέρχεται από περικομμένη αντιγραφή ή κατεστραμμένο σύνδεσμο.

Πρέπει να κωδικοποιείται ολόκληρο το URL ή μόνο ένα μέρος του; Κωδικοποιούνται μόνο τα τμήματα που περιέχουν δεδομένα χρήστη, όπως οι τιμές ερωτημάτων ή τα τμήματα διαδρομής, όχι τα τμήματα που σχηματίζουν τη δομή του URL, όπως το https:// και το όνομα τομέα. Η κωδικοποίηση ολόκληρου του URL με κωδικοποιητή στοιχείων θα μετέτρεπε επίσης τους χαρακτήρες :, / και ? σε κωδικούς ποσοστού, καταστρέφοντας τη διεύθυνση.

Παραπομπές

  1. RFC 3986 — Ενιαίο αναγνωριστικό πόρου (URI): Γενική σύνταξη
  2. Κωδικοποίηση ποσοστού — Wikipedia
  3. MDN — encodeURIComponent()
  4. Πρότυπο URL — WHATWG