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 αλλάζει την κωδικοποίηση στα ίδια τα αρχεία, χωρίς να δημιουργεί νέα).
Και χρησιμοποιείς τα εργαλεία που έχεις για την εξαγωγή του κειμένου, κτλ.