NewProject Δημοσ. 28 Οκτωβρίου 2013 Δημοσ. 28 Οκτωβρίου 2013 Καλησπέρα , έχω το εξής πρόβλημα: Έχω έναν Η/Υ με τον οποίο γράφω σε 3 γλώσσες: Αγγλικα,Ελληνικα και Βουλγάρικα και έχει Current Language for Non-Unicode Programs : Greek. Γράφω ενα πρόγραμμα με Κυριλλικούς χαρακτηρες ως εξής: // #define LANG #ifdef LANG std::cout<<"асдф"<<std::endl; #else std::cout<<"asdf"<<std::endl; #endif Το τελείωσα αλλα οταν βγάζω τα // για να κανει compile με τα βουλγαρικα string μου βγάζει warning: 1>source\****************.cpp(332): warning C4566: character represented by universal-character-name '\u0416' cannot be represented in the current code page (1253) Το πρόβλημα είναι οτι οταν το τρέχω σε ένα άλλο PC με Current Language for Non-Unicode Programs : Bulgarian μου βγάζει τα γράμματα σαν ερωτηματικά. υγ. Δεν θελώ unicode λυσεις , codepages κτλ. υγ2. Άλλαξα από File>Advances Save Options το Encoding και έκανα Save All και τώρα και στα 2 PC μου δείχνει αντι για γράμματα τα γνωστά "κινέζικα" σύμβολα...
migf1 Δημοσ. 28 Οκτωβρίου 2013 Δημοσ. 28 Οκτωβρίου 2013 Δεν έχω ικανή εμπειρία με το Visual Studio για να σε βοηθήσω, αλλά μου ακούγεται τελείως φυσικό η ελληνική κωδικοσελίδα 1253 να μην μπορεί να αναπαραστήσει βουλγάρικους χαρακτήρες. Δοκίμασε στα #define σου να αλλάζεις προγραμματιστικά και την κωδικοσελίδα στη γλώσσα που θέλεις να κάνεις output, με τη συνάρτηση SetConsoleOutputCP(). Παλιότερα είχα φτιάξει ένα μικρό pre-processor interface για να αλλάζει κανείς προγραμματιστικά την κωδικοσελίδα εξόδου, ειδικά για τη γραμμή εντολών των Windows. Μπορείς να το δεις εδώ: http://x-karagiannis.gr/prog/libs/content/misc/other/prompt_for/doc/html/w32con__cpout_8h_source.html , ίσως σε βοηθήσει. Αν σε χαλάει που είναι στον pre-processor μπορείς να το μετατρέψεις σε βιβλιοθήκη συναρτήσεων. Πιθανότατα να χρειαστεί επίσης να αλλάξεις και τη γραμματοσειρά της κονσόλα, κάτι που από Vista και μετά μπορείς να το κάνεις με την SetCurrentConsoleFontEx(). Δυστυχώς η συνάρτηση δεν υπάρχει σε Win XP και πίσω, μπορείς όμως να χρησιμοποιήσεις (at your own risk) την undocumented SetConsoleFont(). Τέλος, αν θες να παίρνεις και input από την κονσόλα σε διαφορετικές γλώσσες, μπορείς να χρησιμοποιήσεις ΚΑΙ την SetConsole(). 1
NewProject Δημοσ. 29 Οκτωβρίου 2013 Μέλος Δημοσ. 29 Οκτωβρίου 2013 Ευχαριστώ για την απάντηση. Το θεμα ειναι οτι δεν θελω (απαραιτητα) να μου εμφανιζοται τα μηνυματα σε οποια γλωσσα σε ποιαδηποτε PC. Απλα μου κανει εντυπωση που οκ , στο δικο μου που εχει Ελληνικα σαν 2η γλώσσα να τα εμφανιζει σαν συμβολα αλλα στο αλλο γιατι ; Αν δηλαδη γραψω πχ στο notepad υποτιτλους και αποθηκευσω το ακρχειο σαν ANSI θα εμφανιζει σωστα τα γραμματα στη γλωσσα για την οποια ειναι γραμμενοι ασχετα αν σε αλλους υπολογιστες με αλλο system locale θα εμφανιζει τα κινεζικα.
migf1 Δημοσ. 29 Οκτωβρίου 2013 Δημοσ. 29 Οκτωβρίου 2013 Το ποια σύμβολα εμφανίζονται στην κονσόλα των Windows καθορίζεται από την τρέχουσα κωδικοσελίδα και την τρέχουσα γραμματοσειρά της κονσόλας. Οπότε όπως μπορείς να διαπιστώσεις και εδώ, η κωδικοσελίδα 1253 δεν υποστηρίζει βουλγάρικους χαρακτήρες. Ακόμα όμως κι αν θέσεις την κωδικοσελίδα στην επιθυμητή, αν δεν αλλάξεις και την default γραμματοσειρά (raster font) σε κάποια που να υποστηρίζει την κωδικοσελίδα που έχεις ενεργοποιήσει (π.χ. Lucida Console ή Consolas, οι οποίες ουσιαστικά είναι utf8 fonts, άρα υποστηρίζουν όλες τις κωδικοσελίδες), πάλι θα βλέπεις αλαμπουρνέζικα.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα