Ερωτηματικά αντί για ελληνικά: τι σημαίνουν τα ? και �

Στη θέση των ελληνικών γραμμάτων βλέπετε ? ή ρόμβους �; Μοιάζουν, αλλά έχουν διαφορετική αιτία. Συχνά το ίδιο το αρχείο είναι εντάξει, μερικές φορές όμως τα γράμματα έχουν ήδη χαθεί. Δείτε πώς θα καταλάβετε ποια περίπτωση έχετε.

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

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

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

Διόρθωση

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

Περίπτωση 1: ρόμβοι � σε σωστό αρχείο

Αν ένας επεξεργαστής, ένα πρόγραμμα αναπαραγωγής ή ο browser δείχνει � αντί για όλα τα ελληνικά, το αρχείο συνήθως είναι αποθηκευμένο στην παλιά κωδικοποίηση Windows-1253 ή ISO-8859-7 και το πρόγραμμα το διαβάζει ως UTF-8. Τα bytes των ελληνικών γραμμάτων δεν είναι έγκυρα σε UTF-8, γι’ αυτό το πρόγραμμα βάζει � μόνο στην εμφάνιση. Μέσα στο αρχείο τα σωστά bytes είναι στη θέση τους. Περισσότερα για τις δύο κωδικοποιήσεις: Windows-1253 και UTF-8.

Λύση: σύρετε το αρχικό αρχείο στο πλαίσιο παραπάνω. Το Mojibuster αναγνωρίζει την κωδικοποίηση κατά την ανάγνωση και αποθηκεύει το αρχείο σε UTF-8. Σημαντικό: χρησιμοποιήστε το ίδιο το αρχείο και όχι κείμενο αντιγραμμένο από το πρόγραμμα – με την αντιγραφή τα � μένουν για πάντα.

Περίπτωση 2: τα � ή ? γράφτηκαν μέσα στο κείμενο

Αν ένα πρόγραμμα αποθήκευσε ή έστειλε το κείμενο ήδη με �, τα αρχικά γράμματα χάθηκαν. Το ίδιο ισχύει για το ?: τα προγράμματα το βάζουν όταν ένα γράμμα δεν υπάρχει στην κωδικοποίηση προορισμού. Για παράδειγμα, όταν αποθηκεύουν σε ASCII ή γράφουν σε στήλη βάσης δεδομένων χωρίς ελληνικά. Τότε το Αθήνα γίνεται ?????.

Αυτά τα γράμματα δεν επανέρχονται: όλα έγιναν το ίδιο σύμβολο. Το Mojibuster δεν μαντεύει, αλλά δείχνει πόσα σημεία επηρεάστηκαν. Βοηθά μόνο η πηγή: κάντε νέα εξαγωγή ή πάρτε ένα αντίγραφο ασφαλείας.

Από πού βγαίνουν τα ερωτηματικά

  • Βάση δεδομένων: στήλη ή σύνδεση σε latin1 ή ascii, ενώ τα δεδομένα έρχονται σε UTF-8. Τότε η MySQL αποθηκεύει ???? αντί για ελληνικά – δείτε MySQL και phpMyAdmin.
  • Παλιά ιστοσελίδα σε PHP: η σελίδα είναι σε Windows-1253 ή ISO-8859-7, αλλά η κωδικοποίηση δεν δηλώνεται στην κεφαλίδα ή στο <meta charset>. Ο browser τη διαβάζει ως UTF-8 και δείχνει �. Αν πάλι η σύνδεση με τη βάση ανοίγει χωρίς κωδικοποίηση, στη βάση γράφονται ? αντί για γράμματα.
  • Σημειωματάριο, «Αποθήκευση ως» → ANSI: σε αγγλικά ή γερμανικά Windows το ANSI είναι δυτική κωδικοποίηση και τα ελληνικά αποθηκεύονται ως ?. Σε ελληνικά Windows το ANSI είναι το Windows-1253: τα ελληνικά σώζονται, άλλοι χαρακτήρες όμως (π.χ. emoji ή πολυτονικά) γίνονται ?.
  • Παλιά προγράμματα e-mail: μηνύματα σε ISO-8859-7 χωρίς σωστή δήλωση κωδικοποίησης ανοίγουν σε προγράμματα που περιμένουν UTF-8 – και αντί για κείμενο φαίνονται �.
  • PowerShell 5.1: το Export-Csv γράφει από προεπιλογή ASCII και αντικαθιστά τα ελληνικά με ? – δείτε PowerShell.
  • Python: το encode('ascii', errors='replace') αντικαθιστά σιωπηλά τα γράμματα με ? – δείτε Python και pandas.
  • Γραμμή εντολών των Windows: δουλεύει με την κωδικοποίηση της κονσόλας (στα ελληνικά Windows CP737) και δείχνει άγνωστους χαρακτήρες ως ?. Συνήθως χαλάει μόνο η εμφάνιση, όχι το αρχείο.

Πώς καταλαβαίνετε ποια περίπτωση έχετε

  1. Ανοίξτε το αρχείο σε επεξεργαστή που δείχνει την κωδικοποίηση, π.χ. στο Notepad++. Αν η γραμμή κατάστασης γράφει «ANSI» ή «Windows-1253», είναι η περίπτωση 1.
  2. Σύρετε το αρχείο στο Mojibuster. Αν διαβαστεί ως Windows-1253 ή ISO-8859-7 και τα ελληνικά επανέλθουν, ήταν η περίπτωση 1 – δείτε Windows-1253 και UTF-8.
  3. Αν το Mojibuster αναφέρει χαμένους χαρακτήρες, είναι η περίπτωση 2. Τότε βοηθά μόνο μια νέα εξαγωγή.

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

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

Μπορεί το Mojibuster να κάνει τα ? ξανά γράμματα;

Όχι. Ένα ? μπορεί να σημαίνει οποιοδήποτε γράμμα, η πληροφορία χάθηκε. Το Mojibuster αφήνει αυτά τα σημεία όπως είναι, αλλά δείχνει πόσα είναι.

Γιατί σε ένα πρόγραμμα βλέπω � και σε άλλο όλα είναι σωστά;

Τότε το αρχείο είναι εντάξει και μόνο το ένα πρόγραμμα το διαβάζει με λάθος κωδικοποίηση. Αποθηκεύστε το αρχείο σε UTF-8 με το Mojibuster και θα το δείχνουν σωστά και τα δύο.

Τι είναι το σύμβολο �;

Είναι ο χαρακτήρας αντικατάστασης U+FFFD. Τα προγράμματα τον βάζουν όταν δεν μπορούν να διαβάσουν ένα byte ως γράμμα. Δείχνει λάθος κωδικοποίησης και δεν ανήκει στο ίδιο το κείμενο.

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