Κωδικοποιητής/Αποκωδικοποιητής URL

Διαφήμιση

Εισάγετε κείμενο για κωδικοποίηση για URLs, ή επικολλήστε κωδικοποιημένο κείμενο για αποκωδικοποίηση.

?Η Κωδικοποίηση μετατρέπει αναγνώσιμο κείμενο σε ασφαλή μορφή URL με ποσοστιαία κωδικοποίηση. Η Αποκωδικοποίηση αντιστρέφει τη διαδικασία.
?Συστατικό: κωδικοποιεί όλους τους ειδικούς χαρακτήρες (ιδανικό για τιμές ερωτήματος). Πλήρες URL: διατηρεί δομή URL όπως :/?#. Φόρμα: χρησιμοποιεί + για κενά (μορφή application/x-www-form-urlencoded).
?Όταν είναι ενεργοποιημένο, η έξοδος ενημερώνεται καθώς πληκτρολογείτε. Απενεργοποιήστε για μεγάλα κείμενα και χρησιμοποιήστε Ctrl+Enter για μη αυτόματη επεξεργασία.
Είσοδος
Έξοδος

Πώς να Χρησιμοποιήσετε

  1. Εισάγετε κείμενο για κωδικοποίηση για χρήση URL, ή επικολλήστε κωδικοποιημένο κείμενο για αποκωδικοποίηση.
  2. Επιλέξτε λειτουργία Συστατικού για παραμέτρους, Πλήρους URL για δομή, ή Φόρμας για μορφή application/x-www-form-urlencoded.
  3. Δείτε το αποτέλεσμα σε πραγματικό χρόνο και αντιγράψτε την έξοδο. Πολλές γραμμές επεξεργάζονται ανεξάρτητα.
Διαφήμιση

Σχετικά με αυτό το εργαλείο

Η κωδικοποίηση 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 που διατηρεί τους δομικούς οριοθέτες μιας διεύθυνσης ιστού.

Πηγές: IETF

Η Επιστήμη και Ιστορία της Ποσοστιαίας Κωδικοποίησης

Η ποσοστιαια κωδικοποιηση προεκυψε από εναν θεμελιωδη περιορισμο του πρωιμου διαδικτυου: τον περιορισμο 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 πρέπει να θεωρουνται ισοδυναμες.

Πώς να Χρησιμοποιήσετε

  1. Εισάγετε κείμενο για κωδικοποίηση για χρήση URL, ή επικολλήστε κωδικοποιημένο κείμενο για αποκωδικοποίηση.
  2. Επιλέξτε λειτουργία Συστατικού για παραμέτρους, Πλήρους URL για δομή, ή Φόρμας για μορφή application/x-www-form-urlencoded.
  3. Δείτε το αποτέλεσμα σε πραγματικό χρόνο και αντιγράψτε την έξοδο. Πολλές γραμμές επεξεργάζονται ανεξάρτητα.

Μεθοδολογία

Η κωδικοποιηση 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 ανα χαρακτηρα.

Πηγές: IETF

Κατανόηση των Αποτελεσμάτων σας

Χρησιμοποιειτε τη λειτουργία Συστατικου (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

Όλοι οι υπολογισμοί γίνονται τοπικά στο πρόγραμμα περιήγησής σας. Δεν αποστέλλονται δεδομένα σε κανέναν διακομιστή.

Ενσωμάτωση εργαλείου

Λήψη κώδικα

Σας φάνηκε χρήσιμο αυτό το εργαλείο;
Θέλετε να μας πείτε περισσότερα;
0/500
Θέλετε να επικοινωνήσουμε μαζί σας;
Ευχαριστούμε για τα σχόλιά σας!

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

Ποια είναι η διαφορά μεταξύ λειτουργίας Συστατικού και Πλήρους URL;
Η λειτουργία Συστατικού κωδικοποιεί ΟΛΟΥΣ τους ειδικούς χαρακτήρες συμπεριλαμβανομένων /, ?, & και =, ιδανικό για τιμές παραμέτρων. Η λειτουργία Πλήρους URL διατηρεί χαρακτήρες δομής όπως :, /, ? και # ενώ κωδικοποιεί κενά και μη-ASCII χαρακτήρες.
Ποιοι χαρακτήρες κωδικοποιούνται;
Στη λειτουργία Συστατικού, όλα εκτός από γράμματα, αριθμούς και - _ . ! ~ * ' ( ) κωδικοποιούνται. Στη λειτουργία Πλήρους URL, χαρακτήρες με ειδική σημασία όπως : / ? # διατηρούνται. Τα κενά γίνονται %20 και μη-ASCII χαρακτήρες όπως é γίνονται %C3%A9.
Μπορώ να κωδικοποιήσω πολλές τιμές ταυτόχρονα;
Ναι! Εισάγετε πολλές τιμές σε ξεχωριστές γραμμές και κάθε γραμμή θα κωδικοποιηθεί ή αποκωδικοποιηθεί ανεξάρτητα. Αυτό είναι χρήσιμο για μαζική επεξεργασία παραμέτρων, διαδρομών αρχείων ή οποιασδήποτε λίστας συμβολοσειρών.
Γιατί πρέπει να κωδικοποιώ URLs;
Τα URLs μπορούν να περιέχουν μόνο ορισμένους χαρακτήρες ASCII. Ειδικοί χαρακτήρες όπως κενά, &, = και μη-αγγλικά γράμματα πρέπει να κωδικοποιηθούν για ασφαλή μετάδοση. Χωρίς κωδικοποίηση, τα κενά σπάνε τα URLs και τα σύμβολα & παρεμβαίνουν στις παραμέτρους.
Ποιό πρότυπο ακολουθεί αυτό το εργαλείο για κωδικοποίηση URL;
Αυτό το εργαλείο υλοποιεί κωδικοποίηση ποσοστού όπως ορίζεται στο RFC 3986 (Uniform Resource Identifier: Generic Syntax). Χρησιμοποιεί τις ενσωματωμένες συναρτήσεις JavaScript encodeURIComponent() για λειτουργία συστατικού και encodeURI() για λειτουργία πλήρους URL, οι οποίες συμμορφώνονται με την προδιαγραφή RFC 3986. Οι χαρακτήρες κωδικοποιούνται ως σημείο ποσοστού ακολουθούμενο από τις τιμές UTF-8 bytes σε δεκαεξαδικό (π.χ. ένα κενό γίνεται %20).
Χειρίζεται αυτό το εργαλείο διεθνείς χαρακτήρες και emojis;
Ναι. Το εργαλείο υποστηρίζει πλήρως κωδικοποίηση UTF-8, που σημαίνει ότι διεθνείς χαρακτήρες (τονισμένα γράμματα, κινεζικά, αραβικά, ιαπωνικά, κορεάτικα κ.λπ.) και emojis κωδικοποιούνται σωστά ως ακολουθίες πολλαπλών bytes. Για παράδειγμα, το σύμβολο του ευρώ γίνεται %E2%82%AC και τα emojis κωδικοποιούνται ως ακολουθίες UTF-8 4 bytes. Η αποκωδικοποίηση επαναφέρει τους αρχικούς χαρακτήρες τέλεια.
Τι είναι η λειτουργία κωδικοποίησης Φόρμας και πότε πρέπει να τη χρησιμοποιήσω;
Η λειτουργία Φόρμας χρησιμοποιεί τη μορφή application/x-www-form-urlencoded, που είναι το πρότυπο για υποβολές φορμών HTML και σώματα αιτημάτων POST. Η βασική διαφορά από τη λειτουργία Συστατικού είναι ότι τα κενά κωδικοποιούνται ως + (σύμβολο συν) αντί %20. Αυτή η μορφή χρησιμοποιείται από τους περιηγητές κατά την υποβολή φορμών HTML, από πολλές υλοποιήσεις OAuth για αιτήματα token, και σε ορισμένες συμβολοσειρές ερωτήματος API. Χρησιμοποιήστε τη λειτουργία Φόρμας όταν χρειάζεστε να αναπαράγετε ακριβώς αυτό που στέλνει ένας περιηγητής σε ένα POST φόρμας, ή όταν ένα API απαιτεί συγκεκριμένα τη μορφή application/x-www-form-urlencoded. Για γενική κωδικοποίηση URL, η λειτουργία Συστατικού είναι συνήθως η καλύτερη επιλογή.