text file encoding (=?utf-8?b?zr/Phs+Ez4zPgM65zro=?=)

Θοδωρής Λύτρας thlytras at gmail.com
Fri Nov 11 19:50:16 EET 2011


Στις Παρ 11 Νοε 2011, ο/η Γιώργος Πάλλας έγραψε:
> Καλημέρα!
> 
> Ερώτηση: Ποιο είναι το πρέπον encoding για ανταλλαγή text αρχείων με
> ελληνικά;
> Έχω βρεί το μπελά μου σε ένα μάθημα που κάνω όπου εγώ τους δίνω text
> αρχεία σε UTF-8 encoding όπως είναι το default στο linux, αυτοί δεν
> μπορούν να το διαβάσουν με τα wordpad τους και τα notepad τους και τα
> διάφορα MS Win flavours τους, ενώ αυτά που μου δίνουν αυτοί είναι
> συνήθως σε ISO-8859-7 και στην καλύτερη σε UTF-16 που από ό,τι
> καταλαβαίνω είναι αυτό που σώζουν τα windows όταν επιλέξεις 'Unicode'.
> 
> Καταλαβαίνω την υποκειμενικότητα και την αοριστία της ερώτησης περί
> πρέποντος encoding, αλλά για πείτε καμιά σκέψη...
> 
> Γ.

Επειδή έχω αντιμετωπίσει παρόμοια προβλήματα στο παρελθόν και ξέρω:
χρειάζεσαι 2 utilities, το iconv και το unix2dos, ώστε να μετατρέπεις το 
encoding και τα line breaks.

Τα windows στο notepad (νομίζω και στο wordpad) χρησιμοποιούν όχι iso-8859-7 
αλλά windows-1253, που δεν είναι ακριβώς το ίδιο (έχει κάποιες ενοχλητικές 
διαφορές, βασικά στο Α κεφαλαίο τονούμενο). 

Επίσης χρησιμοποιούν για line break τους χαρακτήρες CR (ASCII 13) και LF 
(ASCII 10) μαζί, ενώ στο unix χρησιμοποιείται μόνο ο χαρακτήρας LF. Γι'αυτό 
στο notepad εκτός από σκανδιναβικά σου βγάζει όλο το αρχείο σε μια γραμμή.

Έτσι για να δουν αυτοί σωστά τα αρχεία που τους δίνεις,τα μετατρέπεις ως εξής:

iconv -o windows.txt -f utf-8 -t windows-1253 linux.txt
unix2dos windows.txt

και **προαιρετικά** για να δεις εσύ αυτά που σου δίνουν:

iconv -o linux.txt -f windows-1253 -t utf-8 windows.txt
dos2unix linux.txt

Λέω προαιρετικά, γιατί (ως συνήθως σε τέτοιες καταστάσεις!) εσύ μπορείς να 
δεις αυτά που παράγουν τα windows χωρίς μετατροπή. Αφ'ενός μπορείς να ορίσεις 
το encoding στον editor που χρησιμοποιείς σε windows-1253, αφ'ετέρου τα CRLF 
line breaks όχι μόνο θα τα δει σωστά, αλλά (τουλάχιστον στο kwrite που 
χρησιμοποιώ εγώ) όταν ξανασώσεις το αρχείο θα το σώσει πάλι με CRLF line 
breaks και όχι με LF. Που σημαίνει οτι για να ξαναδώσεις στους μαθητές σου το 
ίδιο αρχείο δε θα χρειάζεται καν μετατροπή!

Συνεπώς, επιστρέφοντας στο αρχικό ερώτημα, παρότι το σωστό(ΤΜ) encoding για 
ανταλλαγή αρχείων σε οποιαδήποτε γλώσσα είναι το utf-8 (UTF-8 rulez, κι ας μην 
αρέσει στο Ρικούδη), στην περίπτωση που ανταλλάσσεις text αρχεία με χρήστες 
windows το σωστό είναι το windows-1253 (that is, αν θες να είναι 
ευχαριστημένοι και να μην είσαι ο περίεργος που δεν μπορούν να διαβάσουν τα 
αρχεία του...).

Θοδωρής

-- 
"Beauty is transitory"
"Beauty survives"
        - Mr. Spock & Capt. Kirk, "That which survives", stardate unknown
by Theodore Lytras <thlytras at gmail.com>



More information about the Linux-greek-users mailing list