NeuroN Δημοσ. 25 Μαρτίου 2010 Δημοσ. 25 Μαρτίου 2010 Ξέρει κανεις πως γίνεται να εκτυπώσεις ελληνικούς χαρακτήρες στο command line με java? πχ. το System.out.println("σαδφ"); να εκτυπώνει σαδφ και οχι κινέζικα
ippo00 Δημοσ. 25 Μαρτίου 2010 Δημοσ. 25 Μαρτίου 2010 Τα λεφτά μου στο ότι η κονσόλα σου απλά δεν μπορεί να τους εκτυπώσει
parsifal Δημοσ. 25 Μαρτίου 2010 Δημοσ. 25 Μαρτίου 2010 Έχει ερωτηθεί και απαντηθεί στο παρελθόν πολλές φορές εδώ στο φόρουμ αυτή η απορία. Μία αναζήτηση, περιορισμένη στο subforum του Προγραμματισμού, ψάχνοντας για θέματα που περιέχουν το string "chcp" θα σε πείσει. Συνοπτικά (τρόπος του λέγειν ) , η απάντηση είναι: Στα Ελληνικά Windows by default και σε οποιαδήποτε άλλη έκδοση Windows έχει ρυθμιστεί από Control Panel > Regional Settings για χρήση Ελληνικών σε non-Unicode εφαρμογές, η κονσόλα ερμηνεύει και τυπώνει οποιουσδήποτε χαρακτήρες με δεκαεξαδική τιμή byte από 0x80 και πάνω (ή αλλιώς, δεκαδική τιμή από 128 και πάνω) βάσει της κωδικοσελίδας OEM-737. Εσύ όταν γράφεις τον πηγαίο κώδικά σου στο περιβάλλον ανάπτυξης που χρησιμοποιείς και το σώζεις ως αρχείο στο δίσκο, δεν χρησιμοποιείται OEM-737 encoding αλλά πιθανότατα WINDOWS-1253 encoding. Από τα δύο παραπάνω links, αν αντιπαραβάλεις τους πίνακες θα διαπιστώσεις ότι η συμβολοσειρά "σαδφ" σε WINDOWS-1253, σε OEM-737 «μεταφράζεται» σε "≤άϊ÷". Αυτό μπορείς να το διαπιστώσει εύκολα ακόμη και κάποιος που δεν είναι προγραμματιστής. Άνοιξε π.χ. ένα Notepad, γράψε σαδφ και σώσε το ως txt αρχείο με ANSI encoding. Μετά, σε ένα τερματικό τύπωσε το περιεχόμενο: > C:\Temp>type ANSI.txt ≤άϊ÷ C:\Temp> Οι λύσεις εδώ είναι 4: 1. Σώζεις το αρχείο του πηγαίου κώδικα στο οποίο γράφεις Ελληνικό κείμενο με encoding ΟΕΜ-737. Ίσως το περιβάλλον ανάπτυξης που χρησιμοποιείς να μη δίνει τέτοια δυνατότητα. Σε αυτήν την περίπτωση, μπορείς να μετατρέψεις το αρχείο με τη βοήθεια ενός 3rd party text editor που το κάνει ή ακόμη και με το Wordpad των Windows (Ανοίγουμε το αρχείο με τον κώδικα, File > Save As... > ως format βάζουμε Text Document - MS-DOS Format (*.txt)). Νομίζω πως και το Notepad είχε τέτοια δυνατότητα σε εκδόσεις πριν τα Windows 7, δεν είμαι σίγουρος. Στα 7 πάντως, δεν το βλέπω 2. Αντί να κάνεις το παραπάνω, σε κάποιο σημείο του κώδικά σου πριν αρχίσεις να τυπώνεις Ελληνικά strings, κάνεις κλήση συστήματος για αλλαγή κωδικοσελίδας σε WINDOWS-1253. Δεν έχω ασχοληθεί συστηματικά με Java, αλλά με λίγο googling βλέπω ότι η μέθοδος exec() της κλάσης Runtime δε θα βοηθήσει, αφού τρέχει σε νέα διεργασία την εντολή. Για τη γενική περίπτωση πάντως που μπορούμε να έχουμε κλήση συστήματος στο ίδιο process context που τρέχει ήδη το πρόγραμμά μας, η εντολή που παρέχει το περιβάλλον των Windows για την αλλαγή κωδικοσελίδας είναι η chcp. Επίσης, από τις ιδιότητες του παραθύρου του τερματικού (απλό κλικ στην επάνω αριστερή γωνία > Properties) θα πρέπει να αλλάξει το χρησιμοποιούμενο font σε κάποιο που παρέχει υποστήριξη Ελληνικών, όπως π.χ. το Lucida Console 3. Αντί να πειράξεις τον πηγαίο κώδικά σου, απλά ανοίγεις τερματικό εκ των προτέρων, καλείς την chcp, κάνεις την αλλαγή font και εκτελείς το πρόγραμμά σου 4. Μετατρέπεις το πρόγραμμά σου ώστε αντί να έχεις έξοδο κειμένου σε τερματικό, να την κάνεις σε γραφικό περιβάλλον σε κάποια φόρμα-παράθυρο Όπως καταλαβαίνεις, από τις παραπάνω λύσεις μόνο η 4η είναι πραγματικά portable, αν αυτό ενδιαφέρει.
NeuroN Δημοσ. 25 Μαρτίου 2010 Μέλος Δημοσ. 25 Μαρτίου 2010 Ωραίος ρε φίλε σε ευχαριστώ. Έχω τρέξει τα άπειρα σε java κλπ απο command line και το χα καποια χρόνια απορία αλλα δεν έτυχε να μου είναι απαραίτητο. Βολεύει πολύ αν θες να βλέπεις άμεσα κατι στην κονσόλα. Το 4 έκανα και γω τα εκτύπωνα σε ενα txt για να τα βλέπω και ισχύει οτι αν κάνεις ενα παράθυρο (πχ JPanel) με ελληνικό κείμενο τα εμφανίζει κανονικά. Η λεπτή διαφορά οπότε είναι στο coding του text σε συνδυασμό με το coding που χρησιμοποιεί η κονσόλα γι αυτό και μπορεί να εμφανίζει πχ. το ονόματα αρχείων που είναι σε ελληνικά αλλα δε μπορεί να εμφανίζει τα περιεχόμενά του σε ελληνικα επειδή έχουν άλλο coding. nice Μέσα απο τον κώδικα γίνεται μάλλον κάπως με αυτη την εντολή System.setProperty("file.encoding", "cp1253"); με το σωστό charset. Τώρα θέλω να βρώ κάποιο chcp στο cmd που να μην αλλάζει το font γιατι το χω συνηθίσει .
top-gear Δημοσ. 29 Μαρτίου 2010 Δημοσ. 29 Μαρτίου 2010 Προσφατα δουλεψα με το netbeans και χρησιμοποιησα κανονικα ελληνικα στην κονσολα. Κανε μια δοκιμη απο εκει μηπως τυχον σου δουλεψει ετσι. Sent from my iPhone using Insomnia.app
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.