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

Ανάγνωση και επεξεργασία ελληνικών χαρακήρων σε java


vagraf

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

Δεν συνηθίζω να χειρίζομαι αρχεία ελληνικών σε εφαρμογές java και έτσι έχ λίγο πρόβλημα. Λοιπόν, έχω κάποια αρχεία σε ελληνικά και θέλω να τα διαβάσω από ένα πρόγραμμα java και να τα επεξεργαστώ. Χρησιμοποιώ Bufferedreader με charset UTF-8. αντιμετωπίζω τα εξής προβλήματα:

1) Ότι προσπαθώ να τυπωσω στην κονσόλα δεν αναγνωρίζει τους ελληνικούς χαρακτηρες και τυπώνει ????

2) Χρειάζομαι να αναγνωρίζω τους χαρακτήρες, δηλαδή τα πεζά, τα κεφαλαία, τιας τελείες κτλ... στον ascii έχουμε τον τακτικό αριθμό, σε κωδικοποίηση UNICODE τί μπορώ να κάνω για να ξεχωρίσω τους χαρακτήρες;

 

Ευχαριστώ!

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

1) Αυτό είναι θέμα κονσόλας όχι Java. Σε κονσόλα του Linux παίζουνε κανονικά.

2) Το καλύτερο είναι να βάλεις όλους τους χαρακτήρες σε ένα Map.

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

1) Αυτό είναι θέμα κονσόλας όχι Java. Σε κονσόλα του Linux παίζουνε κανονικά.

 

Αυτό το έλεξα, σε ένα αρχείο το εμφανίζει μία χαρά.

 

2) Το καλύτερο είναι να βάλεις όλους τους χαρακτήρες σε ένα Map.

 

θα δοκιμάσω να περάσω όλους τους χαρακτήρες που χρειάζομαι...αν και θα προτιμούσα κάτι όπως ο τακτικός αριθμός-εσωτερικός κώδικας των χαρακτήρων. Όποιος έχει κάμία ιδέα ας πει. Ευχαριστώ!!!

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

1) Για κονσόλα: πρέπει στις ιδιότητες της κονσόλας να ορίσεις κάποια truetype γραμματοσειρά (δεξί κλικ στον τίτλο μιας κονσόλας, ιδιότητες κτλ).

Στη συνέχεια από το πρόγραμμά σου να εκτελέσεις System("chcp 65001").

Το 65001 είναι για utf-8. Η system δεν ξέρω αν λέγεται έτσι στη Java, είναι η εντολή που χρησιμοποιείς για να εκτελέσεις κάποιο εξωτερικό πρόγραμμα.

 

 

2) Σε utf-8 κωδικοποίηση ένας χαρακτήρας μπορεί να είναι μέχρι 6 bytes. Για να μετατρέψεις ένα χαρακτήρα σε bytes χρησιμοποιείς την

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#getBytes()

Αλλά δε νομίζω ότι θα σε βολέψει αυτό.

 

Εναλλακτικά μπορείς να συγκρίνεις strings και όχι νούμερα, π.χ.

if (s.charAt(10) == 'ω') ...

if (s.charAt(12) == '\u3b5') ...

 

Τη θέση των ελληνικών στο πρότυπο Unicode (για τα '\uXXXX') μπορείς να τη δεις από Έναρξη » Εκτέλεση » charmap.

 

Δεν έχω εμπειρία στη Java, οπότε στις εντολές που γράφω παραπάνω μπορεί να υπάρχουν λαθάκια.

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

Ευχαριστώ για την βοήθεια. Τελικά τα έβαλα σε έναν πίνακα και κάνω τις συγκρίσεις από εκεί. Έχω ένα μικρό πρόβλημα με κάποιους ειδικούς χαρακτήρες που δεν ξέρω ακόμα πως να αναγνωρίσω, π.χ. το /n.

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

Το \n στην C υποδεικνύει την αλλαγή γραμμής και μεταφοράς του κέρσορα στην αρχή της νέας γραμμής, οπότε όταν το βρείς να ξέρεις ότι πρέπει να αλλάξεις γραμμή.

 

Αν πριν το \n προηγείται ο χαρακτήρας \r (δηλαδή \r\n -συνηθισμένο σε κείμενα ASCII αποθηκευμένα με Windows/DOS editors) τότε το \r υποδεικνύει την μεταφορά του κέρσορα στην αρχή της τρέχουσας γραμμής και το \n την αλλαγή της γραμμής -δεν ξέρω αν το \r\n ή σκέτο το \r υπάρχει στην Java πάντως, σίγουρα όμως, από κάποια midlet που έγραψα ξέρω πως το \n στην Java = new line όπως στην C.

 

*Βλέπεις το \r\n είναι μια CP/M – DOS – Windows σύμβαση ενώ στο κόσμο του Unix & C το \n αρκεί (καθώς συμπεριλαμβάνει και το \r).

 

Υ.Γ.

Για περισσότερες λεπτομέρειες (αν σε ενδιαφέρουν) ψάξε ένα παλαιότερο topic που είχαμε ασχοληθεί αναλυτικά με τα \n & \r.

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

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...