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

Ελληνικοί χαρακτήρες στη C


karabouzouk...

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

Δημοσ.

Τι πρέπει να κάνω για να μου τους εμφανίζει στη γραμμή εντολών καθώς τους χρησιμοποιώ μέσα στο πρόγραμμά μου και και Δεύτερον πώς μπορώ να τους εισάγω από τη γραμμή εντολών για επεξεργασία τους από το πρόγραμμα..?

Ευχαριστώ..!

Δημοσ.

Misconception 7 :We can use characters that are letters in alphabets other than the latin alphabet, with input/output facilities that work with plain chars, like printf(), scanf(), isupper(), toupper(), etc, in a portable fashion.

 

 

Or in other words, the following code will work always (greek characters are used):

 

#include <stdio.h>

 

int main(void)

{

printf("Δοκιμαστικό μήνυμα\n");

 

return 0;

}

 

 

Clarification: The basic source and basic execution character sets supported by char, that are guaranteed to work with input/output facilities that work with plain chars in a portable way, support only latin characters.

 

If we want to use non-latin characters, we should use the character type wchar_t, which is defined in <stddef.h> and <wchar.h> standard headers, wchar_t string literals, and the wide character corresponding facilities like wprintf(), wscanf(), iswupper(), towupper(), etc, provided with <wchar.h> standard header, along with the system-supported locales.

 

Thus, the correct form of the above code for my system (Ubuntu Linux 8.10) is the following:

 

#include <wchar.h>

#include <locale.h>

 

int main(void)

{

/* LC_CTYPE affects the behaviour of regular expressions, character classification, character conversion functions, and wide-character functions.

* LC_ALL sets the specified locale for all categories.

*

* The "el_GR.utf8" encoding used, is system-specific (works with Ubuntu Linux 8.10, with greek support installed).

*/

setlocale(LC_CTYPE, "el_GR.utf8");

 

wprintf(L"Δοκιμαστικό μήνυμα\n");

 

return 0;

}

 

 

Παρμένο από εδώ

  • 3 εβδομάδες αργότερα...
Δημοσ.

Χησιμοποιώ windows xp και έτσι δεν βοηθάει μάλλον το παραπάνω αφού αναφέρεται σε Linux απ ότι κατάλαβα..

 

Σε μένα όταν βάζω στον κώδικα ελληνικούς χαρακτήρες τους εμφανίζει στη γραμμή εντολών με ασχετους χαρακτήρες (κινέζικα!)

 

Καμιά άλλη ιδέα..?

Δημοσ.

άλλαξε τα windows με Linux

είναι πιό απλό! :o

 

 

 

 

 

 

 

 

 

 

 

ελπίζω να φαίνεται οτι κάνω πλάκα:mrgreen:

http://www.daniweb.com/forums/thread29543.html#

βοήθεια απο άσχετο (#6)

 

http://www.cplusplus.com/forum/beginner/10408/(η απάντηση του helios)

 

μέχρι να εμφανιστεί κανένας Directx ή alkisg και αλλοι ειδικοί φυσικά !

.

Δημοσ.

Γιατί γράφεις πρόγραμμα για cmd από ANSI C?

Γενική ερώτηση, μιάς και κάτι τέτοιο είναι απλό από το Visual Studio είτε είναι παραθυρική εφαρμογή ή κονσόλας.

Δημοσ.
Γιατί γράφεις πρόγραμμα για cmd από ANSI C?

Γενική ερώτηση, μιάς και κάτι τέτοιο είναι απλό από το Visual Studio είτε είναι παραθυρική εφαρμογή ή κονσόλας.

 

Είμαι σε επίπεδο εκμάθησης ακόμα..! Εσύ τωρα τι εννοείς.. με visual studio δεν θα πρέπει να γράψω σε VB έτσι δεν είναι..?

 

Κάτι από τα παραπάνω δεν βοήθησε.... χρειάζομαι ελληνικούς χαρακτήρες για να εμφανίζω κάποια κωδικοποίηση τους όταν πληκτρολογούνται.. οπότε είναι σχεδόν απαραίτητο να τους βλέπει ο χρήστης αλλά και να τουσ εισάγει..

Δημοσ.

Κανείς μάλλον δεν έχει ασχοληθεί με το θέμα.. Τέσπα τι πρωτείνετε τελικά να χρησιμοποιήσω για να μπορώ να κάνω τη δουλειά μου...? Visual studio..? Κάτι με το NetBeans δεν γίνεται ε..? Για C μιλάμε πάντα..

Ευχαριστώ..!

Δημοσ.
Τι πρέπει να κάνω για να μου τους εμφανίζει στη γραμμή εντολών...

 

Δυστυχώς τα Windows δεν υποστηρίζουν Unicode στην κονσόλα από προεπιλογής. :shock:

 

Μπορείς να κάνεις ένα από τα παρακάτω, προτείνω το πρώτο:

  • Να γράψεις το πρόγραμμά σου κατευθείαν στην κωδικοσελίδα που χρησιμοποιεί η κονσόλα, δηλαδή Windows 737. Αυτό το υποστηρίζουν πολλά περιβάλλοντα προγραμματισμού, π.χ. codeblocks, visual studio κτλ. Έχουν δηλαδή κάποιο μενού στο οποίο διαλέγεις την κωδικοποίηση του αρχείου.
  • Να αλλάξεις την κωδικοσελίδα εξόδου της κονσόλας σε Windows 1253. Αυτό γίνεται είτε "μπακάλικα" με system("chcp 1253"); είτε πιο επίσημα με την SetConsoleOutputCP.
  • Πάλι το ίδιο με την προηγούμενη μέθοδο, αλλά να αλλάξεις την κωδικοσελίδα σε Unicode ώστε και το αρχείο σου να είναι σε utf8 αλλά και να μπορείς να εμφανίζεις στην κονσόλα και άλλες γλώσσες πέρα από τα ελληνικά. Αυτή θα ήταν η πιο σωστή λύση, αλλά η Microsoft άργησε να καταλάβει ότι η κονσόλα είναι σημαντική και την είχε επίτηδες παραμελήσει. Έτσι, για να εμφανιστούν Unicode χαρακτήρες στην κονσόλα θα πρέπει ο χρήστης να διαλέξει truetype γραμματοσειρά από τις ιδιότητες του παραθύρου... εν τέλει η πιο σωστή μέθοδος είναι και η πιο δύσκολη στα Windows.

 

Σχετικά θέματα:

http://www.insomnia.gr/forum/showthread.php?t=132360

http://www.insomnia.gr/forum/showthread.php?t=231233

http://www.insomnia.gr/forum/showthread.php?t=128736

 

Καλημέρα σε όλους :)

Δημοσ.

alkisg Να σαι καλά...! Αρκετά κατατοπηστικός...!! Θα κάνω τις δοκιμές μου και αν σκοντάψω πουθενά επανέρχομαι.. Ευχαριστώ και πάλι..

  • 7 μήνες μετά...
Δημοσ.

Θα ήθελα να ρωτήσω-επισημάνω κάτι επι του θέματος:

 

1) Αν έχω το encoding του source code μου ως utf-8 και κάνω compile μέσω gcc (απο cygwin) τότε εμφανίζει τα ελληνικά. Πρωσοπικά, αλλάζω το charset μέσω dreamweaver.

 

2)Όταν ανοίγω πηγαίο που του έχω βάλει utf-8 τότε στον editor τις dev c++ βγάζει βλακίες όπως επίσης και κατά την εκτέλεση του προγράμματος (μέ ή χωρίς την εντολή system(chcp 1253).Μάλιστα με αλλαγή του chcp Εμφανίζει λάθος και τα μηνύματα του συστήματος όπως: "Πατήστε ένα πλήκτρο για να συνεχίσετε.."

 

3)Όταν δημιουργό τον πηγαίο μέσα από dev C++ ακόμα και με αλλαγή του chcp εμφανίζει βλακείες κατα την διάρκεια εκτέλεσης του προγράμματος. Επίσης βλακείες εμφανίζει και ο πηγαίος μέσα από το πρόγραμμα edit μέσα σε dos περιβάλλον.

 

4)Δεν έχει σημασία να πω πως εμφανίζεται ο πηγαίος μου αν περίπτωση σε notepad γιατί πολύ απλά τον έχω αντικαταστήσει με Con-Text και δεν έχω ιδέα τι encoding χρησιμοποιεί.

 

Και κάτι τελευταίο το αρχείο hello.exe που μου βγάζει ο gcc από cygwin απαιτεί κάποια dll αρχεία όπως cygwin1.dll και άλλα. Αυτό φαίνεται όταν πάω και του αλλάζω θέση και τον τραβάω έξω από τον φάκελο cygwin και έπειτα το τρέχω. Επείδη ο καθηγητής στην σχολή θα το τρέξει σε linux θα υπάρξει κάποια διένεξη ή θα τρέξει κανονικά;

 

Ευχαριστώ πολύ εκ των προτέρων

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

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

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