Μετατροπή σε utf8

...office, φωτογραφία, CAD, spss, latex, κλπ

Συντονιστής: adem1

Re: Μετατροπή σε utf8

Δημοσίευσηαπό mariag » 21 Μάιος 2011, 12:07

simosx έγραψε:
mariag έγραψε:Όταν λοιπόν κοίταξα με το μάτι κάποια ενδεικτικά κείμενα που δεν είναι utf και δεν διαβάζονται, ανακάλυψα ότι παρόλα αυτά αναγνωρίζονται ως utf-8 ακόμα και κείμενα με φορμάτ iso... ή windows... Για να σας το δείξω μάλλον λίγο δύσκολο γιατί θα σας παρέθετα το url από το οποίο κατέβασα το κείμενο, το οποίο εσείς θα δείτε ότι δεν είναι στο format που θέλω, το utf-8.


Δηλαδή, βλέπεις εκείνο το παράξενο κείμενο αυτό στα ελληνικά ή το βλέπεις να φαίνεται σαν π.χ. «ÁõôÞ åßíáé ìéá äïêéìÞ».
Αν το βλέπεις με παράξενους χαρακτήρες όπως παραπάνω, δώσε μικρό παράδειγμα.


Ακριβώς όπως το λες, φαίνεται σαν «Ôá ×ñéóôïýãåííá åßíáé ãéïñôÞ ãåìÜôç áãÜðç êáé ôñõöåñüôçôá.» (παράδειγμα απ το κόρπους αυτού του url http://www.neo.gr/modules.php?name=News ... t&sid=5291) και μου λέει ότι είναι utf-8...
Γνώσεις ⇛ Linux: Λίγες ┃ Προγραμματισμός: Λίγα πράματα ┃ Αγγλικά: Καλά
Λειτουργικό σε Η/Υ ϰ μοντέλο:Ubuntu 9.10 σε DELL STUDIO HYBRID
Προδιαγραφές ⇛ T8100 │ 4GB │GM965│ HD AUDIO 7.1 │1920x1080
Άβαταρ μέλους
mariag
babeTUX
babeTUX
 
Δημοσιεύσεις: 18
Εγγραφή: 18 Μαρ 2010, 10:23
Εκτύπωση

Re: Μετατροπή σε utf8

Δημοσίευσηαπό simosx » 21 Μάιος 2011, 12:35

mariag έγραψε:
Ακριβώς όπως το λες, φαίνεται σαν «Ôá ×ñéóôïýãåííá åßíáé ãéïñôÞ ãåìÜôç áãÜðç êáé ôñõöåñüôçôá.» (παράδειγμα απ το κόρπους αυτού του url http://www.neo.gr/modules.php?name=News ... t&sid=5291) και μου λέει ότι είναι utf-8...


Το παραπάνω μήνυμα που γράφεις, δηλαδή «Ôá ×ñéóôïýãåííá åßíáé ãéïñôÞ ãåìÜôç áãÜðç êáé ôñõöåñüôçôá.» λέει στην πραγματικότητα «Τα Χριστούγεννα είναι γιορτή γεμάτη αγάπη και τρυφερότητα.»

Πως το κατάλαβα; Διότι όπως ακριβώς ανέφερα παραπάνω, το Linux έχει την ιδιαιτερότητα, όταν βλέπει ένα κείμενο να μην είναι UTF-8, να θεωρεί ότι είναι ISO-8859-1 (λατινικά με εκτεταμένους χαρακτήρες) και να το μετατρέπει αυτόματα από ISO-8859-1 σε UTF-8.

Το πρόβλημα δε θα υπήρχε καν αν το Linux έκανε την αυτόματη μετατροπή από ISO-8859-7 σε UTF-8, ωστόσο δεν το κάνει. Και πρέπει να το κάνουμε εμείς.

Πως «αποκρυπρογράφησα» το παραπάνω μήνυμα; Με
Κώδικας: Επιλογή όλων
echo 'Ôá ×ñéóôïýãåííá åßíáé ãéïñôÞ ãåìÜôç áãÜðç êáé ôñõöåñüôçôá.' | iconv -f utf-8 -t iso-8859-1 | iconv -f iso-8859-7 -t utf-8


Off topic:
Τι λάθος έχει η σελίδα π.χ. http://www.neo.gr/modules.php?name=News ... t&sid=5291 ;
Αν αποθηκεύσεις τη σελίδα σε μορφή .html, παρατηρείς ότι αναφέρει στην αρχή

έγραψε:<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">


που είναι λάθος. Είναι στην πραγματικότητα ISO-8859-7.
Ωστόσο, στην επεξεργασία που κάνεις πιστεύω ότι δε γίνεται χρήση της τιμής της κωδικοποίησης που δίνει η σελίδα, οπότε εδώ δε χρειάζεται να κάνεις κάτι.


Αν η παραπάνω σελίδα είχε το όνομα mytest.html, για την μετατροπή της σελίδας αρκεί να τρέξεις

Κώδικας: Επιλογή όλων
iconv -f iso-8859-7 -t utf-8 < mytest.html


για να δεις ότι η μετατροπή γίνεται σωστά και δεν υπάρχει πρόβλημα,
και
Κώδικας: Επιλογή όλων
iconv -f iso-8859-7 -t utf-8 < mytest.html > mytest-utf8.html


για να φτιάξεις τη νέα σελίδα.

Ωστόσο, έδωσες το σύνδεμο με τις σελίδες που θέλεις να καταγράψεις, που σημαίνει ότι μπορούμε να σε βοηθήσουμε περισσότερο.
Δε γνωρίζω τι δικαιώματα δίνουν για το περιεχόμενο των σελίδων· αυτό μπορείς να το διαπιστώσεις εσύ.

Πως μπορείς να κάνεις τη λήψη;

Βήμα 1. Λήψη σελίδων

Κώδικας: Επιλογή όλων
curl -o 'neogr-#1.html' 'http://www.neo.gr/modules.php?name=News&file=print&sid=[1000-7919]'


Με μια μόνο εντολή μπορείς να κάνεις τη λήψη όλων των σελίδων, που θα αποθηκευτούν με το όνομα neogr-xxxx.html, όπως xxxx μεταξύ 1000 και 7919. Δε χρειάζεται πρόγραμμα σε Java για τη λήψη.

Βήμα 2. Μετατροπή κωδικοποίησης

Εγκατάσταση του recode με
Κώδικας: Επιλογή όλων
sudo apt-get install recode

και εκτέλεση
Κώδικας: Επιλογή όλων

recode iso-8859-7..utf-8 neogr-????.html


Αυτό ήταν. Μια εντολή και όλα τα αρχεία διορθώνονται σε UTF-8. (εδώ κράτησε ένα αντίγραφο ασφαλείας των αρχικών .html διότι η εντολή recode αλλάζει την κωδικοποίηση στα ίδια τα αρχεία, χωρίς να δημιουργεί νέα).

Και χρησιμοποιείς τα εργαλεία που έχεις για την εξαγωγή του κειμένου, κτλ.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Μετατροπή σε utf8

Δημοσίευσηαπό mariag » 21 Μάιος 2011, 13:30

Σίμο να σε ευχαριστήσω καταρχήν για όλη αυτή τη βοήθεια που μου δίνεις. Όλα αυτά μου είναι πολύ καινούργια ακόμα και γι αυτό μάλλον δεν έχω μάθει να περιγράφω το πρόβλημα που αντιμετωπίζω κάθε φορά σωστά... Όπως είπα έχω κατεβάσει 190.000 urls, από τα οποία τα 140.000 είναι στο σωστό encoding και τα υπόλοιπα 50,000 ή σε άλλο ή απλά είναι "σκουπίδια". Αυτά τα documents από τα urls τα σώζω ως .txt αρχεία (από βλακεία μου δεν το έχω αναφέρει ακόμα, ζητώ συγγνώμη) πάνω στα οποία και δουλεύω. Έχω βρει έναν τρόπο να μάθω ποια συγκεκριμένα είναι τα μη utf-8 (από τα txt που μου είναι και τα χρήσιμα). Όπως είπα, αυτά τα αρχεία αναγνωρίζονται ανεξαρτήτου encoding ως utf-8. Νομίζω ότι δεν υπάρχει τρόπος να το διορθώσω αυτό, παρά να ξανακατεβάσω με τον σωστό τρόπο τις σελίδες που είναι λάθος... Σωστά;
Και πάλι ευχαριστώ για το χρόνο σου
Γνώσεις ⇛ Linux: Λίγες ┃ Προγραμματισμός: Λίγα πράματα ┃ Αγγλικά: Καλά
Λειτουργικό σε Η/Υ ϰ μοντέλο:Ubuntu 9.10 σε DELL STUDIO HYBRID
Προδιαγραφές ⇛ T8100 │ 4GB │GM965│ HD AUDIO 7.1 │1920x1080
Άβαταρ μέλους
mariag
babeTUX
babeTUX
 
Δημοσιεύσεις: 18
Εγγραφή: 18 Μαρ 2010, 10:23
Εκτύπωση

Re: Μετατροπή σε utf8

Δημοσίευσηαπό simosx » 21 Μάιος 2011, 13:47

mariag έγραψε:Όπως είπα, αυτά τα αρχεία αναγνωρίζονται ανεξαρτήτου encoding ως utf-8. Νομίζω ότι δεν υπάρχει τρόπος να το διορθώσω αυτό, παρά να ξανακατεβάσω με τον σωστό τρόπο τις σελίδες που είναι λάθος... Σωστά;


Η λήψη που κάνεις λαμβάνει τα αρχεία σε κάποια κωδικοποίηση όπως iso-8859-7 ή utf-8. Από εκεί και μετά, μπορείς να μετατρέψεις τα αρχεία που δεν είναι utf-8 σε utf-8 ώστε να είναι όλα με κοινή κωδικοποίηση, για την επόμενη επεξεργασία.

Για το neo.gr οι οδηγίες που έδωσα επιλύουν το πρόβλημά που αντιμετωπίζεις της λήψης και διόρθωσης της κωδικοποίησης με εύκολο και καλό τρόπο.
Για λήψη των αρχείων,
Κώδικας: Επιλογή όλων
curl -o 'neogr-#1.txt' 'http://www.neo.gr/modules.php?name=News&file=print&sid=[1000-7919]'

όπου λαμβάνει όλες τις σελίδες της μορφής http://www.neo.gr/modules.php?name=News ... t&sid=1000 μέχρι http://www.neo.gr/modules.php?name=News ... t&sid=7919 (δηλαδή από 1000 μέχρι 7919, δηλαδή 7919 μείον 1000 = 6919 σελίδες, που είναι και ο ακριβής αριθμός άρθρων που έχει ο δικτυακός τόπος).
Κώδικας: Επιλογή όλων

recode iso-8859-7..utf-8 neogr-????.txt


Μια εντολή που μετατρέπει όλα τα αρχεία με όνομα neogr-xxxx.txt, όπως xxxx = 1000, 1001, 1002, κτλ
από την αρχική κωδικοποίηση iso-8859-7 σε utf-8.

Θα πρότεινα να διαβάσεις ξανά το παραπάνω μήνυμα αρκετές φορές και να δοκιμάσεις αυτά που αναφέρω. Μπορείς να κάνεις ερωτήσεις για κάθε σημείο.

Αν θέλεις να επεξεργαστείς και να διορθώσεις μόνο τις σελίδες που έχεις λάβει ήδη, τότε μπορείς να δείξεις σε τι μορφή είναι οι σελίδες (π.χ. τι όνομα έχουν τα αρχεία, τι δείγμα κειμένου περιλαμβάνουν, κτλ). Για παράδειγμα, αν έχεις ήδη τις σελίδες του neogr και το όνομα των αρχείων είναι π.χ. neogr-files-xxxx.txt, τότε η εντολή για να διορθωθεί η κωδικοποίηση είναι (λάβε αντίγραφο ασφαλείας των αρχείων)
Κώδικας: Επιλογή όλων
recode iso-8859-7..utf-8 neogr-files*.txt

που είναι το δεύτερο βήμα των εντολών που δίνω.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Μετατροπή σε utf8

Δημοσίευσηαπό mariag » 21 Μάιος 2011, 14:47

simosx έγραψε:
Θα πρότεινα να διαβάσεις ξανά το παραπάνω μήνυμα αρκετές φορές και να δοκιμάσεις αυτά που αναφέρω. Μπορείς να κάνεις ερωτήσεις για κάθε σημείο.


Νομίζω έχεις δίκιο, θα καθίσω να πειραματιστώ λίγο και θα διαβάσω με προσοχή όσα μου λες. Αν ξανακολλήσω ίσως σε ξαναενοχλήσω. Ευχαριστώ πολύ!
Γνώσεις ⇛ Linux: Λίγες ┃ Προγραμματισμός: Λίγα πράματα ┃ Αγγλικά: Καλά
Λειτουργικό σε Η/Υ ϰ μοντέλο:Ubuntu 9.10 σε DELL STUDIO HYBRID
Προδιαγραφές ⇛ T8100 │ 4GB │GM965│ HD AUDIO 7.1 │1920x1080
Άβαταρ μέλους
mariag
babeTUX
babeTUX
 
Δημοσιεύσεις: 18
Εγγραφή: 18 Μαρ 2010, 10:23
Εκτύπωση

Προηγούμενη

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Εφαρμογές για Γραφείο / Γραφιστική / Επιστήμες