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

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

Δημοσ.

Εδώ και λίγες βδομάδες άρχισα να μαθαίνω λίγο c

 

Δεν έχω κάποιον ide εγκατεστημένο έχω mingw κ

 

προσπαθώ λοιπών να πάρω ελληνικά στην consola (command prompt) των windows αλλά τίποτα

H consola μου υποστηρίζει ελληνικά έχει active code page 1253

 

ο μόνος τρόπος που είδα ελληνικά από τη c μετά από αρκετό ψάξιμο 

είναι με  printf("\xE3\xE5\xE9\xDC \xF3\xEF\xF5\n"); 

 

έχω δοκιμάσει κάποια πράγματα με το locale και το wchar αλλά τίποτα ίσως να τα έκανα και λάθος

Ξέρει κανένας κάποιον τρόπο.

 

Δημοσ.

Εδώ και λίγες βδομάδες άρχισα να μαθαίνω λίγο c

 

Δεν έχω κάποιον ide εγκατεστημένο έχω mingw κ

 

προσπαθώ λοιπών να πάρω ελληνικά στην consola (command prompt) των windows αλλά τίποτα

H consola μου υποστηρίζει ελληνικά έχει active code page 1253

 

ο μόνος τρόπος που είδα ελληνικά από τη c μετά από αρκετό ψάξιμο 

είναι με  printf("\xE3\xE5\xE9\xDC \xF3\xEF\xF5\n"); 

 

έχω δοκιμάσει κάποια πράγματα με το locale και το wchar αλλά τίποτα ίσως να τα έκανα και λάθος

Ξέρει κανένας κάποιον τρόπο.

Λίγο που το είχα ψάξει και εγώ δεν είχα βρει κάτι.

Δημοσ.

Σε Windows ο μονος τροπος να παρεις ελληνικα στην κονσολα ειναι αν αλλαξεις το φοντο της κονσολας (υπαρχει μια διαδικασια αν το κανεις google) ή αν χρησιμοποιησεις εναλακτικο console emulator σαν το Cmder το οποιο βασιζεται στο ConEmu.

 

Ειλικρινα αν προγραμματιζεις σε Windows και χρησιμοποιεις πολυ την κονσολα, τοτε το cmd.exe δεν θα σου ειναι και πολυ χρησιμο. Το Cmder προσφερει υποστηριξη Unicode για καθε ειδους εφαρμογη.

 

Οταν το κατεβασεις, γραψε ενα δοκιμαστικο προγραμμα

#include <stdio.h>

int main(void)
{

   printf("Γεια σου κόσμε\n");
   return 0;

}

Εννοειται πως δεν χρειαζεται να γραφεις καθε χαρακτηρα σε δεκαξαδικη μορφη. Ολες οι συμβολοσειρες ειναι σειρες απο bytes, ανεξαρτητα σε ποιο encoding scheme ανηκουν. Μπορει να κανει και καποια μετατροπη ο compiler αλλα εσυ δεν χρειαζεται να κανεις τιποτα εξτρα, απο το παραπανω. Απλα μην ξεχασεις να το αποθηκευσεις σε UTF-8 encoding.

 

Ανοιξε τον Cmder, καντο compile, τρεξε chcp 65001 (για να αλλαξεις το codepage σε UTF-8) και τρεξε το προγραμμα σου. Απο εκει και περα η κονσολα θα εφαρμοσει τα απαραιτητα encodings, για εσενα, σε οτι κειμενα της λες να εκτυπωσει.

Δημοσ.

Βάλε linux.

Αστεία απάντηση ειδικά για τα ελληνικά λες και δουλεύουν καλύτερα.

 

Τεσπα, κοίτα το cmd μπορεί να είναι σε ελληνικό encoding, το ide όμως τι encoding έχει? Για ψάξε σε options του ide να δεις. Επίσης στο cmd αν γράψεις ελληνικά γράφει κανονικά?

Δημοσ.

Γιατί να χρησιμοποιήσει κάποιος ελληνικά στη C;

Anyway, αν και δεν με απασχόλησε ποτέ, πέραν των προηγούμενων προτάσεων, μπορείς να κάνεις mapping αγγλικούς χαρακτήρες με το κατάλληλο encoding...

Δημοσ.

Τα γνωστα Linux terminal emulators υποστηριζουν απο προεπιλογη UTF-8 encoding σε ο,τι ειδους κειμενο δεχονται, και επισης εχουν και καταλληλο φοντο. Δηλαδη χωρις να πειραξεις τιποτα, το παραπανω προγραμμα θα εμφανιζεται κανονικα στα περισσοτερα τερματικα. Η διαφορα με το cmd.exe ειναι πως το cmd.exe απο προεπιλογη υποστηριζει ενα αλλο encoding, και το φοντο που εχει προεγκατεστημενο δεν υποστηριζει χαρακτηρες Unicode.

Δημοσ.

Εδώ και λίγες βδομάδες άρχισα να μαθαίνω λίγο c

 

Δεν έχω κάποιον ide εγκατεστημένο έχω mingw κ

 

προσπαθώ λοιπών να πάρω ελληνικά στην consola (command prompt) των windows αλλά τίποτα

H consola μου υποστηρίζει ελληνικά έχει active code page 1253

 

ο μόνος τρόπος που είδα ελληνικά από τη c μετά από αρκετό ψάξιμο 

είναι με  printf("\xE3\xE5\xE9\xDC \xF3\xEF\xF5\n"); 

 

έχω δοκιμάσει κάποια πράγματα με το locale και το wchar αλλά τίποτα ίσως να τα έκανα και λάθος

Ξέρει κανένας κάποιον τρόπο.

Ψάξε ένα παλαιότερο μήνυμα του migf1. Λογικά θα πρέπει να παίξεις με exec-charset και λοιπές παραμέτρους. Όταν εσύ γράφεις κάτι στα Ελληνικά σε κάποιον κειμενογράφο, αυτό που γράφεις ουσιαστικά είναι χαρακτήρες στην κωδικοσελίδα που χρησιμοποιείς. Ας πούμε ότι χρησιμοποιείς το πρότυπο UTF-16. Μετά πας να εμφανίσεις αυτό στο command prompt το οποίο όπως λες χρησιμοποιεί την single-byte κωδικοσελίδα 1253 και έτσι εμφανίζονται μ.ακίες.

 

% cat > tmp.c << EOF 
#include <stdio.h>
int main(void)
{
puts("Hello Γεια");
return 0;
}  
EOF                    
Έστω ότι γράφω το παραπάνω πρόγραμμα. Το locale μου στο linux είναι UTF-8 οπότε το Γεια αντιστοιχεί σε κάποιους συγκεκριμένους χαρακτήρες (8 στο σύνολο).

 

% cc -Wall -o tmp1 tmp.c 
% iconv -f utf-8 -t windows-1253 -o tmp2.c tmp.c 
% cc -Wall -o tmp-wrong tmp2.c 
% cc -Wall -finput-charset=windows-1253 -Wall -o tmp-right tmp2.c 
Κάνω compile το εκτελέσιμο tmp1 και μετά χρησιμοποιώ το iconv ώστε να αλλάξω τον κώδικά μου από UTF-8 σε Windows-1253 (μόνο τα ελληνικά θα αλλάξουν φυσικά). Έπειτα κάνω compile το tmp-wrong και το tmp-right.

 

% ./tmp1; ./tmp-wrong; ./tmp-right  
Hello Γεια
Hello Ãåéá
Hello Γεια
Τρέχοντας το tmp-wrong παίρνω σκουπίδια γιατί τα bytes που έχει το αρχείο μου και είναι ελληνικοί χαρακτήρες αν ερμηνευτούν ως Windows-1253 είναι σκουπίδια αν ερμηνευτούν ως UTF-8. Όταν λέω στον gcc ότι το αρχείο μου έχει γραφτεί σε windows-1253 τότε πραγματοποιεί εσωτερικά το αντίθετο της iconv που έτρεξα, το μετατρέπει στην κωδικοσελίδα που ξέρει ότι χρειάζομαι (ή όποια του πω εγώ με την exec-charset) και έτσι το tmp-right παίζει σωστά.

 

Ή πρέπει δηλαδή να πεις στον κειμενογράφο σου να σώζει το αρχείο ως windows-1253 που θέλει η κονσόλα σου ή πρέπει να πεις στον compiler σου ότι το αρχείο έχει γραφτεί στην τάδε κωδικοσελίδα ώστε να το μετατρέψει σε αυτήν που θέλει η κονσόλα σου.

  • Like 2
Δημοσ.

Ευχαριστώ όλους για τις απαντήσεις 

Τελικά είχατε δίκιο οι περισσότεροι 

Στον notepad++ έγραφα σε utf-8

με αποτέλεσμα να μην μπορούν να εμφανιστούν στην consola 

Αλαξα το character set του notepad++ σε windows 1253  και magic

Μια βδομάδα πεδεύομαι και δεν το είχα καταλάβει. 

 

 

 

post-372633-0-57171300-1485376593_thumb.png

  • Like 2

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...