migf1 Δημοσ. 18 Ιανουαρίου 2015 Δημοσ. 18 Ιανουαρίου 2015 Θεωρητικά το Code::Blocks χρησιμοποιεί το default encoding της πλατφόρμας. Για να μην σε μπλέξω πολύ κάνε την εξής δοκιμή. Γράψε και σώσε με το Code::Blocks ένα .c αρχεία με ελληνικό μήνυμα σε κάποια printf. Μετά άνοιξε αυτό το .c αρχείο με το notepad++ και πες μου τι encoding σου δείχνει στην τέρμα δεξιά μεριά της status-bar.
Επισκέπτης Δημοσ. 18 Ιανουαρίου 2015 Δημοσ. 18 Ιανουαρίου 2015 Αναφέρει το εξής : Κωδικοποίηση σε UTF-8 χωρίς BOM. To notepad++ δεν το είχα, δε μου χρειάστηκε ποτέ, βασικά δεν ήξερα οτι υπήρχε , και τι μπορείς να κάνεις. Eίναι σαν το απλό notepad των windows μόνο που έχει περισσότερα features?
migf1 Δημοσ. 18 Ιανουαρίου 2015 Δημοσ. 18 Ιανουαρίου 2015 Αναφέρει το εξής : Κωδικοποίηση σε UTF-8 χωρίς BOM. To notepad++ δεν το είχα, δε μου χρειάστηκε ποτέ, βασικά δεν ήξερα οτι υπήρχε , και τι μπορείς να κάνεις. Eίναι σαν το απλό notepad των windows μόνο που έχει περισσότερα features? Οκ. Λογικά, αν με ανοιχτό το .c μέσα στο Code::Blocks πας: Edit->File Encoding και το βάλεις εκεί σε "System default" (εκεί μάλλον σου είναι τώρα σε "UTF 8") και σώσεις το .c, λογικά δεν θα έχεις πρόβλημα πια (απλώς βάλε -fexec-charset=cp737 στον compiler, εφόσον λες πως σε αυτή την κωδικοσελίδα είναι από μαμά η γραμμή εντολών σου... άλλα ίσως πια να μη χρειάζεται ούτε αυτό). Για δοκίμασε και πες μου. ΥΓ. Το Notepad++ είναι programmers editor... δες κι εδώ.
Επισκέπτης Δημοσ. 18 Ιανουαρίου 2015 Δημοσ. 18 Ιανουαρίου 2015 Έκανα αυτά που λες. Μόνο που , στο File encoding έλεγε System Default. Μετά, μέσα σε μια printf έβαλα ελληνικά αλλά μόλις πάτησα να κάνει compile μου εμφάνισε ένα μήνυμα σε κίτρινο πλαίσιο που έλεγε : tip: The file encoding has been changed to UTF-8 to prevent data loss. Δηλαδή στην αρχή , μόλις το άνοιξα, ήταν στο System Default και μετά άλλαξε σε UTF-8.
migf1 Δημοσ. 18 Ιανουαρίου 2015 Δημοσ. 18 Ιανουαρίου 2015 Περίεργο, τι έκδοση Code::Blocks και Windows χρησιμοποιείς; Οπότε τώρα υπάρχουν διάφορες λύσεις: μια περιγράφεται εδώ (αλλά η προσωπική μου εμπειρία με το 65001 στην κονσόλα των Windows ήταν πολύ προβληματική). Πριν καταφύγεις στην παραπάνω λύση, δοκίμασες έτσι όπως είσαι τώρα να βάλεις μονάχα -fexec-charset=cp737 στον compiler (χωρίς δηλαδή -fexec-input flag) και δεν σου δούλεψε;
Επισκέπτης Δημοσ. 18 Ιανουαρίου 2015 Δημοσ. 18 Ιανουαρίου 2015 Χρησιμοποιώ την 13.12 σε win 7 x64. Ναι το δοκίμασα και δεν μου τρέχει, πάλι "κινέζικα". Στο link που μου έδωσες, το πέμπτο βήμα που λέει... "5) Select an utf8 capable font in all cmd windows. (not the standard font) (eg. use Lucida Console)" ... τι εννοεί?
migf1 Δημοσ. 18 Ιανουαρίου 2015 Δημοσ. 18 Ιανουαρίου 2015 Εννοεί πως μόλις ανοίξει το παράθυρο της κονσόλας, κάνε κλικ στην πάνω αριστερή γωνία του και από το μενού που ανοίγει διάλεξε: Properties. Κατόπιν στην καρτέλα Font βάλε είτε Consolas, είτε Lucida Console (το default είναι Raster font, που είναι πολύ περιορισμένο ως προς τις κωδικοσελίδες που υποστηρίζει). Πάντως η άποψή μου είναι να αποφύγεις την κωδικοσελίδα 65001. Δοκίμασε αυτά που σου λέει εκεί, αλλά αντί για 65001 βάλε ως κωδικοσελίδα εκτελέσιμου την 1253. Δηλαδή: 1. Στο Code::Blocks βάλε ως στάνταρ κωδικοποίηση πηγαίων αρχείων την UTF-8 (αντί για System Default). 2. Στο πρόγραμμά σου βάζε πάντα: #include <stdlib.h> και ως 1η γραμμή κώδικα στην main() βάζε: system( "chcp 1253" ); 3a. Στον compiler βάζε -fexec-charset=cp1253 (βασικά αυτό πρέπει να συμπίπτει με την ενεργή κωδικοσελίδα της κονσόλας των Windows.) 3b. Στον compiler μη βάζεις καθόλου το -finput-charset (όταν το παραλείπεις, το θεωρεί UTF-8... παρόλα αυτά μπορείς αν το θες να το βάλεις κι αυτό: -finput-charset=utf-8... βασικά αυτό πρέπει να συμπίπτει με το Edit -> File Encoding του Code::Blocks). 4. Στο παράθυρο της κονσόλας των Windows που ανοίγει για να τρέξει το πρόγραμμά σου, την 1η φορά άλλαξε τη γραμματοσειρά είτε σε Consolas είτε σε Lucida Console (τις υπόλοιπες φορές θα το θυμάται, αν θυμάμαι καλά).
Επισκέπτης Δημοσ. 18 Ιανουαρίου 2015 Δημοσ. 18 Ιανουαρίου 2015 Ούτε πάλι εμφανίζει τα ελληνικά. Το καλό είναι πως εμφανίζει λιγότερο περίεργα σύμβολα Πάντως, ξανά έτρεξα σε cmd την εντολή chcp και μου εμφανίζει 437
migf1 Δημοσ. 18 Ιανουαρίου 2015 Δημοσ. 18 Ιανουαρίου 2015 Εννοείς με 1253 ως executable codepage ή με 65001; ΥΓ. Εγώ έχω αλλάξει την default console codpage των Windows σε 1253 (και σε XP x86 και σε Win 7 x64 σε διάφορα μηχανάκια μου) κάνοντας edit το registry κι έχω "ησυχάσει" από όλη αυτή τη βαβούρα... μόνο που έχει ρίσκο να πειράζεις το registry. Οπότε αν το κάνεις, το κάνεις at your own risk. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Όταν επιχείρησα να βάλω στο registry την 65001 στα XP, το PC δεν ξαναμπουτάρισε ποτέ (στα Win 7 δεν το δοκίμασα καν, έβαλα απευθείας 1253). Το επανέφερα με BartPE τελικά... να συμπληρώσω επίσης πως έτσι κι αλλιώς το 65001 είναι ανάπηρο UTF-8. Παραθέτω και σχετικό screenshot από το registry των XP σε περίπτωση που θελήσει να το κάνει κανείς (έχω αλλάξει και το ACP εγώ): ... Πάντως, ξανά έτρεξα σε cmd την εντολή chcp και μου εμφανίζει 437 437? Αυτή δεν έχει πλήρη υποστήριξη ελληνικών χαρακτήρων. Κανονικά όμως, αν γυρίζεις το codepage μέσα από το πρόγραμμά σου (με: system( "chcp XXX" ); ) στην κωδικοσελίδα που βάζεις και στο -fexec-charset δεν θα έπρεπε να είχες πρόβλημα (προφανώς όμως σε μια κωδικοσελίδα που να υποστηρίζει ελληνικά... και προφανώς να τα υποστηρίζει και η γραμματοσειρά που έχεις στην κονσόλα των Windows).
Επισκέπτης Δημοσ. 18 Ιανουαρίου 2015 Δημοσ. 18 Ιανουαρίου 2015 Λοιπόν, άλλαξα τελικά την κωδικοσελίδα από 437 σε 747. Στο codeblocks ,άλλαξα σε UTF-8 Στον compiler δεν έχω βάλει καμία εντολή. Στην main ,πρώτη γραμμή έχω βάλει system("chcp 1253"). Αυτά, τώρα, άνοιξα το αρχείο κειμένου με το notepad++ και στην κωδικοποίηση αναφέρει : ISO 8859-7. Έτρεξα μετά με code blocks τον κώδικα, και.... εμφανίζονται σωστά τα ελληνικά από το αρχείο. Μόνο που όταν βάζω μια printf με ελληνικά μέσα, δεν τα βγάζει σωστά="κινέζικα".
migf1 Δημοσ. 20 Ιανουαρίου 2015 Δημοσ. 20 Ιανουαρίου 2015 Δεν έχω ξανακούσει για κωδικοσελίδα 747... που την διάβασες/είδες/βρήκες;
Επισκέπτης Δημοσ. 20 Ιανουαρίου 2015 Δημοσ. 20 Ιανουαρίου 2015 Σε hp laptop, win 8.1 x64 αυθεντικά. Στο command prompt βάζω chcp και μου εμφανίζει: The active code page is 747. Δεν την βρήκα πουθενά, την είχε το λαπτοπ λογικά. Εγώ τις ρυθμίσεις άλλαξα
migf1 Δημοσ. 20 Ιανουαρίου 2015 Δημοσ. 20 Ιανουαρίου 2015 Δεν ξέρω τι είναι αυτή η κωδικοσελίδα. Εγώ δεν την έχω ξανακούσει, κι επίσης δεν υπάρχει στην online τεκμηρίωση της Microsoft. Ίσως είναι κάποια undocumented code-page στα Windows 8.1 (αλλά μου ακούγεται λίγο απίθανο να συμβαίνει κάτι τέτοιο... ίσως τεκμηριώνεται κάπου αλλού, τι να πω).
Επισκέπτης Δημοσ. 20 Ιανουαρίου 2015 Δημοσ. 20 Ιανουαρίου 2015 τελος πάντων, το λαπτοπ ας το αφήσω καλύτερα. Να διορθώσω το πρόβλημα στο pc θέλω. Αυτό δοκιμάζω, τώρα-τώρα. Να σε ρωτήσω λίγο, πρέπει η κωδικοποίηση του αρχείου να είναι ίδια με του code blocks?
migf1 Δημοσ. 20 Ιανουαρίου 2015 Δημοσ. 20 Ιανουαρίου 2015 Φεύγω τώρα (θα επιστρέψω το απόγευμα ή βράδυ) αλλά είναι πικρή ιστορία τα code-pages στα Windows. Δες π.χ. εδώ για την διαφορά μεταξύ OEM και ANSI code-pages. Σε γενικές γραμμές, η το -finput-charset πρέπει να συμφωνεί με την κωδικοποίηση του .c αρχείου, και το -fexec-charset με την ενεργή κωδικοσελίδα της κονσόλας των Windows.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα