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

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

Postby atyrolo » Mon Apr 28, 2014 11:23 am

Θα περίμενε κανείς η εμφάνιση των ελληνικών χαρακτήρων να είναι άμεση συνέπεια των ρυθμίσεων των Windows και εν μέρει αυτό είναι αληθές αλλά ενώ όλα φαίνονται να λειτουργούν κανονικά και τα ελληνικά να χρησιμοποιούνται σε όλες τις υπόλοιπες εφαρμογές, το Windows Console διαφωνεί.

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

Αρχικά χρειάζεται να αλλάξουμε την γραμματοσειρά την οποία χρησιμοποιεί to Windows Console. Για να το καταφέρουμε πρέπει να ανοίξουμε ένα παράθυρο στο MS-DOS (command prompt). Ανάλογα με την έκδοση των Windows που χρησιμοποιεί ο χρήστης το command prompt μπορεί να βρεθεί σαν εικονίδιο προγράμματος για εκτέλεση η πρέπει να εκτελεστεί χειροκίνητα. Για λόγους απλότητας θα εκκινήσουμε το command prompt από το Start-Run (Έναρξη-Εκτέλεση) ή Start-Search (Έναρξη-Αναξήτηση) γράφοντας cmd

Image

Πατώντας Enter μετά την αναζήτηση ή κάνοντας click στο cmd που εμφανίζεται στα προγράμματα παίρνουμε το παρακάτω αποτέλεσμα

Image

Πατώντας δεξί click στο παράθυρο που έχει ανοίξει επιλέγουμε Properties (Ιδιότητες)

Image

Στο παράθυρο που ανοίγει επιλέγουμε την καρτέλα Font (Γραμματοσειρά) και επιλέγουμε σαν γραμματοσειρά την Lucida Console και πατάμε OK

Image

Εδώ τελειώνει η πρώτη ρύθμιση που χρειαζόταν για την εμφάνιση ελληνικών χαρακτήρων. Κάθε φορά που θα ανοίγουμε ένα παράθυρο command prompt θα χρησιμοποιείται η γραμματοσειρά Lucida Console. Αυτή η αλλάγη δεν επηρεάζει σε τίποτα το λειτουργικό σύστημα καθώς και την εμφάνιση αυτού προς τον χρήστη οπότε δεν μας πειράζει που μια τέτοια αλλαγή είναι μόνιμη.

Η δεύτερη ρύθμιση που πρέπει να κάνουμε γίνεται με 2 τρόπους. Ο ένας είναι προσωρινός ( που σημαίνει ότι θα πρέπει να χρησιμοποιείται κάθε φορά που θα ανοίγει ένα παράθυρο command prompt και ο δεύτερος μόνιμος και αφορά την μετατροπή ρυθμίσεων στην registry του υπολογιστή. Αν δεν είστε σίγουροι ότι μπορείται να αντιστρέψεται οποιαδήποτε ρύθμιση είναι μόνιμη καλύτερα να προτιμήσετε τον πρώτο τρόπο.

Προσωρινή αλλαγή

Πριν από την εκτέλεση οποιουδήποτε προγράμματος που χρησιμοποιεί ελληνικούς χαρακτήρες εκτελεστε στο command prompt την εντολη “chcp 1253” και μετά εκτελέστε το πρόγραμμα.

Image

Θα μου πείτε τώρα ότι αυτό είναι πιο μεγάλος μπελάς από το να γράψετε greeklish οπότε ας δούμε μια λύση πιο χρηστική.


Μέσα στη συνάρτηση main σαν πρώτη εντολη γράψτε

system("chcp 1253");

Το προγραμμα αυτόματα θα εκτελεί την εντολή πριν ξεκινήσει να εμφανίζει οτιδήποτε στην οθόνη.

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

Μόνιμή Αλλαγή

Προσοχή!!! Αν δεν είστε σίγουροι για το τι κάνετε καλυτερα να μείνεται στον προσωρινό τρόπο μετατροπής!!!

Πριν ξεκινήσουμε την διαδικασία για το πως να μονιμοποιήσετε τις αλλαγες ας εξηγήσουμε αρχικά τι κάνει η εντολή “chcp 1253”. Το chcp σημαίνει Change Code Page. Τα Windows έχουν σαν αυτόματο code page το 737 που αντιστοιχεί στην Ελληνική Γλώσσα.

Image

Αυτό που θα κάνουμε είναι να ρυθμίσουμε τον υπολογιστεί να ξεκινάει το 1253 κάθε φορά που εκκινεί ένα παράθυρο MS-DOS.

Ανοίξτε το regedit και βρείτε το HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor . Εκεί προσθέστε ένα string value το οποίο θα είναι “Autorun” με τιμή “chcp 1253”. Η αλλαγή αυτή επηρεάζει μόνο το cope page του Windows Concole και όχι τα υπόλοιπα!

Το command prompt πλέον πρέπει κατα την εκκίνηση να περιέχει και την αλλαγή στο chcp και να είναι αυτής της μορφής

Image

Η περιεκτικότητα των βημάτων γίνεται σκόπιμα επειδή θα είναι προφανή τα βήματα σε αυτόν που πρέπει να τα χρησιμοποιήσει!
Αντώνης Τυρολοΐδης
Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών

Image

Υπηρεσίες Εκπαίδευσης μέσω Υπολογιστή
Σερρών 10 - 67100 Ξάνθη
tel: 2541100744
web: www.nqm.gr
User avatar
atyrolo
 
Posts: 3
Joined: Mon Apr 07, 2014 7:21 am

Return to Δομημένος Προγραμματισμός (Γλώσσα C)

Who is online

Users browsing this forum: No registered users and 0 guests

User Control Panel

Who is online

In total there are 0 users online :: 0 registered, 0 hidden and 0 guests (based on users active over the past 5 minutes)
Most users ever online was 19 on Wed Jan 28, 2015 3:00 pm

Users browsing this forum: No registered users and 0 guests