Προς το περιεχόμενο

Τρελοί χαρακτήρες óéìéãäÜëé σε αρχειο txt linux mint


leftgtkm

Προτεινόμενες αναρτήσεις

Αρκετά αρχεία που ειχα φέρει (μάλλον) απο τα windows  τα εμφανίζει με τρελούς χαρακτηρες τύπου óéìéãäÜëé

Οταν γράφω Ελληνικά σε text αρχεια τώρα δεν εχει πρόβλημα, τα γράφει και τα διαβάζει καλά,  character encoding locale UTF-8.

Mε τα παλιά αρχεία ομως τι μπορώ να κάνω ?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εμφανίζονται έτσι επειδή δεν είναι σε κωδικοποίηση UTF-8, αλλά σε ISO-8859-7/WINDOWS-1253. Τώρα υπάρχουν διάφοροι τρόποι να μετατραπούν, με διάφορους κειμενογράφους ή από τη γραμμή εντολών. Μόλις δόκιμασα να ανοίξω ένα τέτοιο αρχείο με τον "gedit", που είναι ο κειμενογράφος του GNOME, και το εμφάνισε κανονικά με ελληνικούς χαρακτήρες. Άλλοι κειμενογράφοι δεν το κάνουν αυτό(mousepad, geany ...) και χρειάζεται να επιλέξεις την κωδικοποίηση ISO-8859-7 ή WINDOWS-1253 για να εμφανιστούν κανονικά οι ελληνικοί χαρακτήρες. Ο gedit έχει και τη δυνατότητα, μέσω της "Αποθήκευσης ως" να το μετατρέψεις σε UTF-8.

O gedit είναι συνήθως ήδη εγκατεστημένος, αλλά και αν δεν είναι μπορείς να τον εγκαταστήσεις από τα αποθετήρια της διανομής που έχεις. Αφού τον εγκαταστήσεις(στην περίπτωση που δεν είναι ήδη εγκατεστημένος) με δεξί κλικ στο αρχείο που θέλεις, επιλέγεις "Ανοιγμα με" και από εκεί επιλέγεις το gedit(μπορεί να αναφέρεται και ως "Επεξεργαστής Κειμένου" αν το σύστημα σου είναι στα ελληνικά).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

43 λεπτά πριν, leftgtkm είπε

Αρκετά αρχεία που ειχα φέρει (μάλλον) απο τα windows  τα εμφανίζει με τρελούς χαρακτηρες τύπου óéìéãäÜëé

Οταν γράφω Ελληνικά σε text αρχεια τώρα δεν εχει πρόβλημα, τα γράφει και τα διαβάζει καλά,  character encoding locale UTF-8.

Mε τα παλιά αρχεία ομως τι μπορώ να κάνω ?

Όπως σου είπε και ο dancer_69, το σύστημά σου είναι ρυθμισμένο να δουλεύει με UTF-8 ενώ τα αρχεία σου είναι ακολουθούν την κωδικοσελίδα windows-1253 (που είναι σχεδόν ίδια με την iso8859-7).

Αν σε ένα τερματικό τρέξεις την εντολή "file όνομα αρχείου" θα πρέπει να πάρεις την απάντηση "ISO-8859 text" ή "ISO-8859 text, with CRLF line terminators".

Για να δεις το περιεχόμενο των αρχείων αρκεί να επιλέξεις στον editor σου να τα ανοίξει σαν windows-1253 όπως σύστησε ο dancer. Επίσης, αν είναι πολλά και δεν είναι εφικτό να τα αποθηκεύεις ένα-ένα σαν UTF-8 μπορείς να χρησιμοποιήσεις την εντολή iconv για να το κάνεις.

for ff in arxeio1 arxeio2 arxeio3 ktl; do
    iconv -f windows-1253 -t utf8 -o ${ff}.utf8 ${ff}
done

Μια μορφή θα μπορούσε να είναι η παραπάνω η οποία μετατρέπει τα αρχεία σε utf8 και τα σώζει σε νέο αρχείο με επέκταση .utf8 ώστε αν γίνει κάποιο λάθος να υπάρχει και το αρχικό αρχείο.

Τώρα γιατί σου το εμφανίζει με αυτούς τους χαρακτήρες; Αν δεις εδώ την κωδικοσελίδα ISO8859-1, θα δεις ότι το ó αντιστοιχεί στο F3, το é στο E9, το ì στο EC, και πάει λέγοντας. Αυτά τα νούμερα που βρίσκεις αν πας να τα δεις στο ISO8859-7 που είναι το ελληνικό, βγαίνει η λέξη "σιμιγδάλι"

Το πιο πιθανό είναι δηλαδή ο editor να σου άνοιξε το αρχείο σαν αγγλικό κείμενο της κωδικοσελίδας ISO8859-1.

  • Thanks 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

2 ώρες πριν, leftgtkm είπε

Αρκετά αρχεία που ειχα φέρει (μάλλον) απο τα windows  τα εμφανίζει με τρελούς χαρακτηρες τύπου óéìéãäÜëé

συνήθως το txt των windows από επιλογή σώζει σε ANSI γιαυτό και εμφανίζονται έτσι Το αντιμετώπισα στο παρελθόν Αποθηκεύεις  είτε σε utf-8 είτε σε unicode και δεν υπάρχει θέμα Τώρα αν θες να βάλεις στο mint το   gedit τρέξε sudo apt-get install gedit -y και θα το βρεις στα βοηθήματα 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το gedit το ανοίγει χωρις ελληνικούς χαρακτήρες ακόμα και αν το εχω κάνει save as UTF-8.

Δούλεψε ομως ωραία το iconv

πχ   iconv -f WINDOWS-1253 -t UTF-8 axbax.txt -o axbax.utf-8

 

Για να βάλω ομως το iconv μέσα σε loop  δεν το εχω ξανακάνει και αν μπορει κάποιος ας μου βάλει ενα web link  που εξηγεί πως τρέχουμε τέτοια σκριπτάκια.

Ευχαριστώ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Αυτό που έγραψα πριν μπορείς να το τρέξεις κατευθείαν στο τερματικό όπως έτρεξες την iconv. Υπάρχουν πολλοί τρόποι να πετύχεις αυτό που θέλεις ανάλογα με την μορφή που έχουν τα αρχεία σου. Για παράδειγμα,

1) Τα αρχεία σου αυτά είναι όλα μέσα σε υποκαταλόγους ενός καταλόγου (πχ ξεκινούν από το /home/leftgtkm/TXT και κάτω) ή είναι χύμα εδώ και εκεί ;

2) Στους καταλόγους που είναι αυτά τα αρχεία, υπάρχουν _και_ αρχεία σε utf-8 ή είναι μόνο αυτά;

find /home/αρχικός_κατάλογος_των_αρχείων -name "*.txt" -exec iconv -f windows-1253 -t utf8 -o {}.utf8 {} \;

Αν πχ ισχύει το 1) και 2), τότε μπορείς να τα κάνεις όλα με την μία με την find όπως φαίνεται παραπάνω. Η εντολή αυτή λέει βρες όλα τα αρχεία με επέκταση .txt στον αρχικό κατάλογο και όλους του υποκαταλόγους και τρέξε για το καθένα την εντολή "iconv -f windows-1253 -t utf8 -o κάθε_αρχείο.txt.utf8 κάθε_αρχείο.txt" (τα {} αντικαθίστανται με το εκάστοτε αρχείο).  Επειδή η iconv θα τρέξει σε όλα τα αρχεία για αυτό θα πρέπει να ισχύει το 2 αλλιώς θα τρέξει και στα utf8 αρχεία.

Αν είναι χύμα και υπάρχουν και utf-8 αρχεία, τότε πάλι μπορείς να το κάνεις εύκολα αν δεν υπάρχουν κενά στα ονόματα των αρχείων, πχ ως εξής:

find /home -name "*.txt" -exec file {} \; | grep ISO-8 | cut -d: -f1 > /tmp/filelist
for ff in $(< /tmp/filelist); do
   iconv -f windows-1253 -t utf8 -o ${ff}.utf8 ${ff}
done

Η find τρέχει σε όλα τα αρχεία την εντολή file ώστε να διαπιστώσει τι είναι το κάθε αρχείο και σώζει στο αρχείο filelist μόνο όσα αρχεία είναι ISO ώστε να μην σου πειραχθούν τα UTF-8. Μετά το for τρέχει στα αρχεία αυτά και τρέχει στο καθένα την iconv.

Υπάρχουν δεκάδες ακόμη τρόποι για αυτή τη δουλειά.

Επεξ/σία από imitheos
  • Thanks 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...