Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Αναγνωση ελληνικων χαρακτηρων απο text file

Îåêßíçóå áðü ôï ìÝëïò mixio. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 02-10-2011, 21:19. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  31-12-2007, 11:35 38715

    Αναγνωση ελληνικων χαρακτηρων απο text file

    Καλημερα, αναπτυσσω μια εφαρμογη σε C# με Visual Studio 2005 και .NET Compact Framework για PDA.
    Ειμαι σχετικα απειρος με ολα αυτα καθως ξεκινησα πριν δυο μηνες να ασχολουμε με C# για PDA.
    Το προβληματακι μου ειναι απλο:
    Εχω ενα text file με κατι λεξεις στα ελληνικα.
    Οταν παω να διαβασω τις λεξεις μεσω του προγραμματος δε βγαινει τιποτα.
    Σιγουρα εχει να κανει με κωδικοποιηση αλλα δοκιμασα πολλα πραματα και δεν εβγαλα ακρη.

    Οποιος μπορεσει να με βοηθησει ΚΑΛΑ ΘΑ ΚΑΝΕΙ !
    Καλη πρωτοχρονια !

    Sleep-deprived psychotic hacker

  •  31-12-2007, 12:11 38716 σε απάντηση της 38715

    Απ: Αναγνωση ελληνικων χαρακτηρων απο text file

    Πως το διαβάζεις (ποιά μέθοδο και πως την καλείς) και πως δημιουργείς το αρχείο? Τί σημαίνει "τίποτα"? Τίποτα - δεν επιστρέφει string, τίποτα - επιστρέφει κινέζικα, τίποτα - επιστρέφει κουτάκια?  Η πρώτη περίπτωση μπορεί να σημαίνει ότι προσπαθείς να διαβάσεις λάθος αρχείο ή ότι δεν υπάρχει το αρχείο. Οι άλλες δύο είναι προβλήματα κωδικοποίησης.

    Ένας από τους ευκολότερους τρόπους να διαβάσεις αρχείο είναι η File.ReadAllText. Η απλή της έκδοση προσπαθεί να ανιχνεύσει αυτόματα αν το αρχείο είναι Unicode ή όχι, ενώ υπάρχει και έκδοση στην οποία δίνεις εσύ το encoding που θέλεις να χρησιμοποιηθεί.
    Υπάρχουν και άλλοι τρόποι να διαβάσεις ένα αρχείο, π.χ. χρησιμοποιώντας streams και ένα StreamReader, την File.OpenText, ή διαβάζοντας απευθείας bytes από ένα Stream. Σε κάθε περίπτωση θα πρέπει να κοιτάξεις το documentation της αντίστοιχης μεθόδου ή κλάσης για να δεις αν και πως υποστηρίζει τα διάφορα encodings. Για παράδειγμα, η κλάση StreamReader επιτρέπει τον ορισμό του Encoding μόνο στον constructor της, η File.OpenText σου επιστρέφει ένα StreamReader έτοιμο για UTF-8, ενώ αν δουλέψεις απευθείας με Streams, θα πάρεις πίσω χύμα bytes τα οποία θα πρέπει να μετατρέψεις εσύ σε strings χρησιμοποιώντας την Encoding.GetString.

    Ρίξε και μία ματιά στο Basic File I/O του MSDN Library, όπου περιγράφει μερικές βασικές τεχνικές.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  31-12-2007, 18:39 38724 σε απάντηση της 38716

    Απ: Αναγνωση ελληνικων χαρακτηρων απο text file

    Παναγιωτη ολα αυτα που με ειπες τα εχω δοκιμασει.
    Το αρχειο ειναι ως εξης. Περιεχει ενα ονομα στα ελληνικα και το αντιστοιχο στα αγγλικα.
    Κωστας@Kostas
    Γιαννης@Giannis
    Το δημιουργησα απο το συστημα. Δλδ εφτιαξα ενα txt το ανοιξα και εγραψα τα δεδομενα με το χερι..

     Το ανοιγω με StreamReader reader = new StreamReader(filePath, Encoding.UTF8, false);
     Διαβαζω την γραμμη
    String line = reader.ReadLine();
     και το MessageBox.Show(line) πεταει @Kostas k @Giannis.

     Το ανοιγω με StreamReader reader = new StreamReader(filePath, Encoding.Unicode, false);
     και το MessageBox.Show(line) πεταει κουτακια μονο.

     Το ανοιγω με StreamReader reader = new StreamReader(filePath, Encoding.ASCII, false);
     και το MessageBox.Show(line) πεταει ερωτηματικα@Kostas k ερωτηματικα@Giannis

     Χρησιμοποιησα την String readText = File.ReadAllText(filePath, Encoding.UTF8);
     αλλα ο compiler χτυπαει επειδη δε βρισκει την ReadAllText επειδη δεν υπαρχει στο .NET Compact.

    Δοκιμασα και το File.OpenText() αλλα παλι τα ιδια...

    Κατι με το encoding οταν γραφω το αρχειο πρεπει να φταει.. επειδη το γραφω απο τα windows..



    Sleep-deprived psychotic hacker

  •  02-01-2008, 08:45 38731 σε απάντηση της 38724

    Απ: Αναγνωση ελληνικων χαρακτηρων απο text file

    Καλημέρα και χρόνια πολλά. Πρέπει να δοκιμάσεις και άλλα encodings. Νομίζω ότι το 928 θα σου κάνει.

    Encoding NewEncoding = encoding.GetEncoding(928);
    StreamReader reader = new StreamReader(filePath, NewEncoding, false);


    Πάντως αφού γράφεις εσύ το αρχείο, αν όταν το σώζεις με save as στο notepad διαλέξεις Encoding: Unicode ή UTF-8 δεν θα έχεις πρόβλημα.


    Manos
  •  02-01-2008, 10:54 38735 σε απάντηση της 38731

    Απ: Αναγνωση ελληνικων χαρακτηρων απο text file

    Καλημερα και χρονια πολλα!

    Το 928 δε δουλεψε γιατι δε το υποστηριζει η πλατφορμα.
    ΑΛΛΑ
    δουλεψε αυτο με το save as και ελεισες ενα πολυ κομπλεξικο προβλημα που ειχα. Ελεος.
    Απλα να σημειωσω οτι το PDA δεν ειχε στο save as επιλογη για encoding και το εκανα στα XP και το μετεφερα στο PDA.

    ΕΥΧΑΡΙΣΤΩ !
    Παντως καλη φαση το φορουμ αυτο με Ελληνες developers. Συνεννοηση στο full.

    Sleep-deprived psychotic hacker

  •  02-01-2008, 11:03 38736 σε απάντηση της 38735

    Απ: Αναγνωση ελληνικων χαρακτηρων απο text file

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

    Αν λάβουμε απάντηση που μας λύνει το πρόβλημα, είναι πολύ σημαντικό να θέσουμε σε "Έχει επιλυθεί" το "Κατάσταση Ενότητας" και να μαρκάρουμε τη σωστή απάντηση με το "Σημείωση ως Απάντησης". Είναι πιο σημαντικό από "χίλια ευχαριστώ", από το να ανάψετε λαμπάδα ίσα με το μπόι αυτού που σας απάντησε (που να το ξέρετε άλλωστε;) ή να του στείλετε ένα τενεκέ λάδι. Έτσι, και θα σας μείνει ο τενεκές και δε θα σας λένε οι υπόλοιποι χρήστες τενεκέ.

    Manos
  •  02-01-2008, 11:41 38741 σε απάντηση της 38736

    Απ: Αναγνωση ελληνικων χαρακτηρων απο text file

    Το εκανα. Αυτο γιατι ομως; Κερδιζει καμια λαμπαδα αυτος που εχει δωσει τις πιο πολλες απαντησεις;

    Sleep-deprived psychotic hacker

  •  02-01-2008, 11:49 38742 σε απάντηση της 38741

    Απ: Αναγνωση ελληνικων χαρακτηρων απο text file

    Όχι. Συχνά κοιτάμε αν υπάρχουν αναπάντητες ή ανοικτές ερωτήσεις για να τις απαντήσουμε. Για πολλούς και διάφορους λόγους, μερικές ερωτήσεις μένουν αναπάντητες για μέρες, είτε επειδή δεν τις πρόσεξε κανείς, ή ήταν κακογραμμένες, ή είχαμε φύγει όλοι για διακοπές. Μία εμπειρική παρατήρηση λέει ότι αν μία ερώτηση δεν πάρει έστω και μία άσχετη απάντηση για 18 ώρες, δεν θα πάρει ποτέ.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  02-01-2008, 12:02 38745 σε απάντηση της 38742

    Απ: Αναγνωση ελληνικων χαρακτηρων απο text file

    Ωραια. Χαιρομαι. Τρελη οργανωση παιζει εδω.
    I'll be watching..

    Sleep-deprived psychotic hacker

  •  02-10-2011, 20:56 67610 σε απάντηση της 38715

    Απ: Αναγνωση ελληνικων χαρακτηρων απο text file

    mixio:
    Καλημερα, αναπτυσσω μια εφαρμογη σε C# με Visual Studio 2005 και .NET Compact Framework για PDA.
    Ειμαι σχετικα απειρος με ολα αυτα καθως ξεκινησα πριν δυο μηνες να ασχολουμε με C# για PDA.
    Το προβληματακι μου ειναι απλο:
    Εχω ενα text file με κατι λεξεις στα ελληνικα.
    Οταν παω να διαβασω τις λεξεις μεσω του προγραμματος δε βγαινει τιποτα.
    Σιγουρα εχει να κανει με κωδικοποιηση αλλα δοκιμασα πολλα πραματα και δεν εβγαλα ακρη.

    Οποιος μπορεσει να με βοηθησει ΚΑΛΑ ΘΑ ΚΑΝΕΙ !
    Καλη πρωτοχρονια !

    Καλησπέρα! Χρειάζομαι κι εγώ τη βοήθειά σας! Αντιμετωπίζω παρόμοιο πρόβλημα με ανάγνωση ελληνικών χαρακτήρων από από αρχείο *.txt, με τη διαφορά ότι το πρόβλημα δε γίνεται άμεσα εμφανές στο ίδιο το text file αλλά μόνο όταν τρέχω το πρόγραμμα, και αφορά μεμονωμένους χαρακτήρες. Για να πάρω τα πράγματα από την αρχή, είχα ένα αρχείο κειμένου σε πολυτονικό, το μετέτρεψα σε μονοτονικό και το αποθήκευσα σε encoding UTF-8. Το πρόγραμμα πρέπει να μετρά συλλαβές κάθε σειράς. Φαίνεται όμως ότι με μερικά τονούμενα φωνήεντα υπάρχει πρόβλημα, αλλά αυτό γίνεται τυχαία, δηλαδή, αλλού το "ί" υπολογίζεται κανονικά και αλλού όχι, και το ίδιο και με άλλα τονούμενα. 
       Με το πρόγραμμα δεν νομίζω να υπάρχει πρόβλημα. Είδα το πρόβλημα ανάγνωσης των χαρακτήρων αυτών και όταν έκανα ανάγνωση του αρχείου με Readline. Στη θέση αυτών των χαρακτήρων η κονσόλα έβγαζε ερωτηματικά. Αντίθετα, όταν έκανε ReadToEnd(), όλα εμφανίζονταν οκ.
      Δεν γνωρίζω σε βάθος προγραμματισμό. Φιλόλογος Ελληνικών είμαι αλλά λόγω του μεταπτυχιακού μου χρειάστηκε να μπω λιγο στα "χωράφια" σας παιδιά. Γι αυτό θα το εκτιμούσα ιδιαίτερα αν μου εξηγούσατε με απλά λόγια το πρόβλημα και πώς θα μπορούσα να το λύσω. 

    Ευχαριστώ εκ των προτέρων.
  •  02-10-2011, 21:19 67611 σε απάντηση της 67610

    Απ: Αναγνωση ελληνικων χαρακτηρων απο text file

    Το τί εμφανίζεται στην κονσόλα έχει να κάνει με το font που της έχεις ορίσει. Το font που χρησιμοποιεί αρχικά δεν είναι Unicode αλλά χρησιμοποιεί το locale του μηχανήματος, το οποίο ορίζεται από τα Regional Settings > System Locale. Αν για παράδειγμα το locale είναι English δεν θα δεις ελληνικά κι ας είναι ελληνικό το κείμενο. Επιπλέον, το πολυτονικό είναι "εκτός" για τα περισσότερα ελληνικά codepages οπότε υπάρχει περίπτωση να μην εμφανίζονται οι πολυτονικοί χαρακτήρες ακόμα και σε ελληνικό σύστημα.

    Αν το αρχείο είναι unicode και εμφανίζεις το κείμενο ως Unicode δεν έχει σημασία αν δουλεύεις με ελληνικά ή κινέζικα μανδαρίνων. Αν έχεις πρόβλημα μπορεί να συμβαίνουν τα εξής:
    • Το αρχείο ΔΕΝ είναι unicode. Όταν το έφτιαξες κάτι έγινε λάθος και αποθηκεύτηκε σε μορφή που δεν αναγνωρίζεται ως Unicode. Πως το αποθήκευσες? Με ποιό πρόγραμμα?
    • Υπάρχει πρόβλημα στο πρόγραμμα μετατροπής από πολυτονικό σε μονοτονικό. Αυτό είναι πολύ πιθανό αν το πρόβλημα εμφανίζεται "τυχαία". Ο ίδιος χαρακτήρας θα εμφανίζεται πάντα με τον ίδιο τρόπο. Αν εμφανίζεται διαφορετικά, δεν είναι ο ίδιος χαρακτήρας. Πως έκανες τη μετατροπή? Το αρχικό κείμενο ήταν πραγματικό πολυτονικό unicode ή μήπως ήταν καμμία από τις αρχαίες γραμματοσειρές της Magenta που ξεγελούσαν τις εφαρμογές με διάφορα διγράμματα?
    • Τα αποτελέσματα γράφονται σε μορφή που δεν είναι Unicode. Αυτό σίγουρα συμβαίνει στην κονσόλα. Αν αποθηκεύσεις τα αποτελέσματα σε ένα αρχείο unicode τί βλέπεις?

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems