Τι είναι το mojibake (τα «κινέζικα»);

Το mojibake – στα ελληνικά λέμε ότι το κείμενο «βγαίνει κινέζικα» ή «αλαμπουρνέζικα» – είναι κείμενο του οποίου τα γράμματα έγιναν ακατανόητα σύμβολα, όπως ÊáëçìÝñá ή Î•Î»Î»Î·Î½Î¹ÎºÎ¬ αντί για ελληνικά. Δημιουργείται όταν ένα κείμενο αποθηκεύεται με μία κωδικοποίηση και διαβάζεται με άλλη, και στις περισσότερες περιπτώσεις διορθώνεται πλήρως. Επικολλήστε παρακάτω ένα χαλασμένο κείμενο και δοκιμάστε.

Λειτουργεί με κείμενο και με αυτά τα αρχεία:

  • CSV
  • TXT
  • JSON
  • XML
  • SRT
  • VTT
  • SMI
  • TSV
  • MD
  • HTML
  • SQL
  • LOG

Για παράδειγμα εξαγωγές από το Excel, αντίγραφα ασφαλείας βάσεων δεδομένων, υπότιτλοι και κώδικας ιστοσελίδων.

Διόρθωση

  1. Σύρετε ένα αρχείο ή επικολλήστε κείμενο
  2. Η διόρθωση γίνεται αυτόματα
  3. Αντιγράψτε ή κατεβάστε το αποτέλεσμα
ή σύρετε το αρχείο εδώ

Από πού βγαίνει η λέξη mojibake;

Το mojibake (文字化け) είναι ιαπωνική λέξη: «moji» σημαίνει «χαρακτήρας» και «bake» «μεταμόρφωση». Τη δεκαετία του 1990 οι υπολογιστές στην Ιαπωνία χρησιμοποιούσαν παράλληλα πολλές κωδικοποιήσεις, όπως Shift_JIS, EUC-JP και ISO-2022-JP, γι’ αυτό τα χαλασμένα e-mail και οι ιστοσελίδες ήταν καθημερινό φαινόμενο. Από εκεί η λέξη πέρασε στα αγγλικά και έγινε διεθνής όρος. Στα ελληνικά λέμε συνήθως ότι το κείμενο «βγαίνει κινέζικα».

Πώς δημιουργούνται τα κινέζικα;

Ο υπολογιστής αποθηκεύει το κείμενο ως bytes και η κωδικοποίηση ορίζει ποιο byte αντιστοιχεί σε ποιο γράμμα. Στο Windows-1253 το α είναι ένα byte: E1. Ένα πρόγραμμα που διαβάζει το ίδιο byte ως Windows-1252 δείχνει στη θέση του το λατινικό á. Στο UTF-8, αντίθετα, το α αποθηκεύεται σε δύο bytes, CE B1, που ως Windows-1252 γίνονται α.

Σε αυτό το στάδιο δεν έχει χαθεί τίποτα: τα bytes είναι ακόμη εκεί, απλώς διαβάστηκαν λάθος. Γι’ αυτό τα κινέζικα στις περισσότερες περιπτώσεις αναιρούνται: το Mojibuster μετατρέπει τα λάθος σύμβολα πάλι σε bytes και τα διαβάζει με τη σωστή κωδικοποίηση.

Κείμενο σε Windows-1253 που διαβάστηκε ως Windows-1252

Κινέζικα

Êáëþò Þñèáôå óôçí ÁèÞíá, ç óõíÜíôçóç åßíáé ôçí ÐÝìðôç óôéò 10

Μετά τη διόρθωση

Καλώς ήρθατε στην Αθήνα, η συνάντηση είναι την Πέμπτη στις 10

Οι μορφές των κινέζικων στα ελληνικά

  • ÊáëçìÝñá: κείμενο σε Windows-1253 που διαβάστηκε με δυτική κωδικοποίηση – η μορφή που ξέρουν όλοι από παλιά e-mail και υπότιτλους.
  • Ελληνικά: κείμενο UTF-8 που διαβάστηκε ως Windows-1252, π.χ. σε Mac, σε φόρμες ιστοσελίδων ή σε PHP.
  • Ελληνικά: κείμενο UTF-8 που διαβάστηκε ως Windows-1253, κυρίως στο ελληνικό Excel: Ελληνικά κινέζικα στο Excel.
  • Ολόκληρα αρχεία σε Windows-1253 ή ISO-8859-7 μετατρέπονται σε UTF-8: Μετατροπή Windows-1253 σε UTF-8.

Mojibake σε άλλες γλώσσες

  • Ιαπωνικά: 縺薙s縺ォ縺。縺ッ αντί για こんにちは – κείμενο UTF-8 που διαβάστηκε ως Shift_JIS. Περισσότερα στην ιαπωνική σελίδα.
  • Ρωσικά: Привет αντί για Привет – κείμενο UTF-8 που διαβάστηκε ως Windows-1251. Στα ρωσικά το λένε «krakozyabry».
  • Δυτικές γλώσσες: é, ñ ή â‚¬ αντί για é, ñ ή € – η πιο συχνή μορφή στον κόσμο.

Συνηθισμένες αιτίες

  • Το Excel ανοίγει ένα CSV σε UTF-8 χωρίς BOM ως Windows-1253.
  • Η σύνδεση με τη βάση δεδομένων χρησιμοποιεί latin1, ενώ τα δεδομένα είναι σε UTF-8.
  • Μια ιστοσελίδα ή ένα e-mail δηλώνει λάθος charset.
  • Παλιά αρχεία σε Windows-1253 ανοίγουν σε πρόγραμμα που περιμένει UTF-8.
  • Κείμενο που είναι ήδη χαλασμένο μετατρέπεται ξανά και προκύπτουν διπλά κινέζικα.

Διορθώνονται πάντα τα κινέζικα;

Στις περισσότερες περιπτώσεις ναι, εφόσον τα bytes είναι ακέραια. Η διόρθωση είναι αδύνατη αν κάποιο πρόγραμμα αντικατέστησε τα γράμματα με ? ή με τον χαρακτήρα αντικατάστασης �, γιατί τότε η αρχική πληροφορία χάθηκε. Υπάρχει και μια ειδική ελληνική περίπτωση: όταν το UTF-8 διαβάζεται ως Windows-1253, τα γράμματα ρ, ψ, ό, ύ, ώ, ϊ, ΐ και αρκετά κεφαλαία γίνονται αόρατοι χαρακτήρες ελέγχου, κι αν αυτοί σβήστηκαν κατά την αντιγραφή, τα γράμματα λείπουν. Το Mojibuster διορθώνει ό,τι είναι δυνατό και για τα ? και � αναφέρει επίσης πόσα σημεία χάθηκαν. Τα Greeklish δεν είναι mojibake: είναι ελληνικά γραμμένα σκόπιμα με λατινικά γράμματα.

Πώς αποφεύγετε τα κινέζικα;

  • Αποθηκεύετε τα αρχεία σε UTF-8 και τα CSV για το Excel ως CSV UTF-8 (οριοθετημένο με κόμματα).
  • Δηλώνετε ρητά την κωδικοποίηση: <meta charset="utf-8"> στην HTML και utf8mb4 στη MySQL και στη MariaDB.
  • Μετατρέπετε το κείμενο μόνο μία φορά, στο σημείο όπου περνά από το ένα σύστημα στο άλλο.
  • Στην εισαγωγή επιλέγετε εσείς την κωδικοποίηση, αντί να αφήνετε το πρόγραμμα να μαντέψει.

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

Είναι το αρχείο κατεστραμμένο ή έχει ιό;

Όχι. Τα κινέζικα είναι πρόβλημα εμφάνισης και όχι ιός, και συνήθως δεν σημαίνουν ότι χάθηκαν δεδομένα. Το αρχείο απλώς διαβάστηκε με λάθος κωδικοποίηση.

Ποια η διαφορά ανάμεσα στα κινέζικα και στον χαρακτήρα �;

Κινέζικα όπως ÊáëçìÝñá περιέχουν ακόμη τα αρχικά bytes και διορθώνονται. Ο χαρακτήρας � σημαίνει ότι ένα πρόγραμμα δεν μπόρεσε να διαβάσει ένα byte και το αντικατέστησε – αυτό το γράμμα χάθηκε.

Γιατί εμφανίζονται ερωτηματικά αντί για ελληνικά;

Το πρόγραμμα αποθήκευσε το κείμενο σε κωδικοποίηση που δεν έχει ελληνικά γράμματα και τα αντικατέστησε με ?. Τότε τα γράμματα χάθηκαν και δεν επανέρχονται, γι’ αυτό αξίζει να εξαγάγετε ξανά το αρχείο από την πηγή σε UTF-8.

Ανεβαίνει το κείμενο σε διακομιστή;

Όχι. Το Mojibuster διορθώνει το κείμενο στον browser σας· δεν στέλνεται πουθενά και δεν αποθηκεύεται.

Περισσότεροι οδηγοί