Κωδικοποιητής/Αποκωδικοποιητής Base64
Πληκτρολογήστε ή επικολλήστε κείμενο, μετά κωδικοποιήστε ή αποκωδικοποιήστε. Το Unicode και τα emoji δουλεύουν σωστά — τίποτα από όσα εισάγετε δεν φεύγει από το πρόγραμμά σας περιήγησης.
Base64 σωστό ως προς το Unicode, όχι μόνο ASCII
Το Base64 κωδικοποιεί bytes, όχι χαρακτήρες, οπότε το πρώτο βήμα
για κείμενο είναι να μετατραπεί η συμβολοσειρά σας σε bytes —
και ακριβώς εκεί χαλάνε οι αφελείς υλοποιήσεις. Αυτό το εργαλείο
χρησιμοποιεί TextEncoder για να μετατρέψει το
κείμενό σας στη σωστή ακολουθία bytes UTF-8 πριν την κωδικοποίηση
Base64, και TextDecoder για να αντιστρέψει αυτό στην
επιστροφή. Η συνηθισμένη συντόμευση, η απλή btoa(text), υποθέτει ένα byte ανά χαρακτήρα (Latin-1)
και χαλάει τη στιγμή που πληκτρολογείτε ελληνικό χαρακτήρα με
τόνο ή ένα emoji — αυτό το εργαλείο δεν έχει αυτό το πρόβλημα.
Παράδειγμα
Η κωδικοποίηση της φράσης καλημέρα ελλάδα (με τον
τόνο στο «έ») παράγει ακριβώς:
zrrOsc67zrfOvM6tz4HOsSDOtc67zrvOrM60zrE=
Η αποκωδικοποίηση αυτής της συμβολοσειράς επιστρέφει καλημέρα ελλάδα ακριβώς — κάθε χαρακτήρας ανέπαφος,
τόνος συμπεριλαμβανομένου. Περάστε την ίδια είσοδο απευθείας από
την btoa() και θα πετάξει σφάλμα, επειδή το «έ» και
τα υπόλοιπα ελληνικά γράμματα με τόνο βρίσκονται εκτός Latin-1.
Συχνές ερωτήσεις
Σε τι χρησιμεύει πραγματικά το Base64;
Το Base64 μετατρέπει αυθαίρετα bytes σε μια συμβολοσειρά από γράμματα, ψηφία, +, / και = — ένα αλφάβητο ασφαλές να μπει οπουδήποτε αναμένεται απλό κείμενο. Αυτό έχει σημασία επειδή πολλές μορφές δεν μπορούν να μεταφέρουν ακατέργαστο δυαδικό: email (τα συνημμένα MIME είναι κωδικοποιημένα σε Base64), data URI (ενσωμάτωση μιας μικρής εικόνας απευθείας σε CSS ή HTML ως data:image/png;base64,...), και πεδία JSON ή XML που πρέπει να μεταφέρουν δυαδικό περιεχόμενο χωρίς να χαλάνε τη γύρω σύνταξη.
Γιατί οι τόνοι και τα emoji χαλάνε ορισμένους κωδικοποιητές Base64;
Η ενσωματωμένη btoa() της JavaScript υποθέτει ότι κάθε χαρακτήρας χωράει σε ένα byte Latin-1 (0–255) και πετάει σφάλμα ή αλλοιώνει ό,τι βρίσκεται εκτός αυτού του εύρους — έτσι το «ά», το «☕» και τα κινέζικα ιδεογράμματα είτε σκάνε είτε γίνονται ακατάληπτα σύμβολα. Το κείμενο στη JavaScript είναι εσωτερικά UTF-16, αλλά σχεδόν πάντα προορίζεται να μεταδοθεί ως UTF-8, όπου αυτοί οι ίδιοι χαρακτήρες παίρνουν 2–4 bytes ο καθένας. Αυτό το εργαλείο κωδικοποιεί πρώτα με TextEncoder (μετατρέποντας το κείμενό σας σε σωστά UTF-8 bytes), και μετά κάνει Base64 σε αυτά τα bytes — οπότε ό,τι θα αλλοίωνε η μόνη της btoa() βγαίνει σωστά.
Είναι το Base64 κρυπτογράφηση ή μέτρο ασφαλείας;
Όχι — αυτό έχει σημασία να το ξέρετε. Το Base64 είναι κωδικοποίηση, όχι κρυπτογράφηση. Δεν έχει κλειδί, δεν έχει μυστικό, και οποιοσδήποτε μπορεί να το αποκωδικοποιήσει ακαριαία με οποιοδήποτε online εργαλείο ή μία γραμμή κώδικα. Αν δείτε διαπιστευτήρια ή tokens «προστατευμένα» με Base64, δεν είναι καθόλου προστατευμένα· αντιμετωπίστε το Base64 αποκλειστικά ως μορφή ασφαλή για μεταφορά κειμένου, ποτέ ως τρόπο απόκρυψης ή προστασίας πληροφορίας.
Μπορώ να κωδικοποιήσω αρχεία με αυτό το εργαλείο;
Όχι προς το παρόν — αυτό το εργαλείο δουλεύει με κείμενο που πληκτρολογείτε ή επικολλάτε, όχι με ανέβασμα αρχείων. Η κωδικοποίηση των ακατέργαστων bytes ενός αρχείου σε Base64 (όπως κάνουν εσωτερικά τα προγράμματα περιήγησης για τα data URI) είναι μια συναφής αλλά διαφορετική δουλειά που αυτό το εργαλείο δεν εκτελεί.