Το Στέκι των Πληροφορικών

Επαγγελματικό Λύκειο => Γενικά => Προγραμματισμός Υπολογιστών => Μήνυμα ξεκίνησε από: happiness στις 24 Φεβ 2020, 08:53:43 ΠΜ

Τίτλος: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
Αποστολή από: happiness στις 24 Φεβ 2020, 08:53:43 ΠΜ
Στα windows 10 που χρησιμοποιώ IDLE 2.7.10 (την έκδοση του βιβλίου δηλαδή), έχω πρόβλημα με την εμφάνιση ελληνικών χαρακτήρων στην κονσόλα κατά την εκτέλεση του προγράμματος (αλλά και κατά την εκτέλεση μεμονομένων εντολών). Όταν μία εντολή στο py αρχείο περιέχει ελληνικά
Κώδικας [Επιλογή]
raw_input('Δώσε το όνομα του μαθητή:')
εμφανίζεται κάτι τέτοιο:
Κώδικας [Επιλογή]
Î"ώσε Ï,,ο όνομα Ï,,οÏ... μαθηÏ,,ή:
Όταν δίνω μεμονομένη εντολή στην κονσόλα πχ
Κώδικας [Επιλογή]
print 'γεια'
πετάει λάθος
Κώδικας [Επιλογή]
Unsupported characters in input
Έχω χρησιμοποιήσει την εντολή ορισμού του encoding στο αρχέιο
Κώδικας [Επιλογή]
# -*- coding: UTF-8 -*-
Η γραμματοσειρά που χρησιμοποιώ είναι Courier.
Τίτλος: Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
Αποστολή από: happiness στις 24 Φεβ 2020, 08:58:21 ΠΜ
Και τώρα παρατηρώ ότι όποτε θέλει τα εμφανίζει τα ελληνικά. Για το πρόγραμμα
Κώδικας [Επιλογή]
# -*- coding: UTF-8 -*-
on=raw_input('Δώσε το όνομα του μαθητή:')
cl=raw_input('Δώσε την τάξη του μαθητή:')
b1=int(input('Δώσε τον βαθμό του 1ου μαθήματος:'))
b2=int(input('Δώσε τον βαθμό του 2ου μαθήματος:'))
b3=int(input('Δώσε τον βαθμό του 3ου μαθήματος:'))
mo=(b1+b2+b3)/3
print 'Ο μαθητής',on,'είναι στην τάξη',cl,'και έχει μέσο όρο',mo

στην κονσόλα βλέπω
Κώδικας [Επιλογή]
Î"ώσε Ï,,ο όνομα Ï,,οÏ... μαθηÏ,,ή:kostas
Î"ώσε Ï,,ην Ï,,άξη Ï,,οÏ... μαθηÏ,,ή:G
Î"ώσε Ï,,ον βαθμό Ï,,οÏ... 1οÏ... μαθήμαÏ,,οÏ,:12
Î"ώσε Ï,,ον βαθμό Ï,,οÏ... 2οÏ... μαθήμαÏ,,οÏ,:14
Î"ώσε Ï,,ον βαθμό Ï,,οÏ... 3οÏ... μαθήμαÏ,,οÏ,:15
Ο μαθηÏ,,ήÏ, kostas είναι σÏ,,ην Ï,,άξη G και έχει μέσο όρο 13

...την τελευταία ελληνική έκφραση δηλαδή την εμφανίζει.
Τίτλος: Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
Αποστολή από: bugman στις 24 Φεβ 2020, 09:40:34 ΠΜ
https://docs.python.org/3/howto/unicode.html
Το παραπάνω μπορεί να βοηθήσει.
Τίτλος: Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
Αποστολή από: taxata στις 24 Φεβ 2020, 10:57:41 ΠΜ
Δοκίμασε
cp1253
αντι
UTF8
Τίτλος: Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
Αποστολή από: happiness στις 24 Φεβ 2020, 10:58:27 ΠΜ
Δυστυχώς όχι  :(
Έχω μία βασική κατανόηση για το πως γίνεται η κωδικοποίηση στην python, όμως το πρόβλημά μου εμένα εδώ είναι ότι δεν θέλω να προσθέσω παραπάνω χειρισμό κωδικοποίησης στον κώδικα (πχ εάν προσθέσω το u πριν από κάθε string, τότε εμφανίζονται σωστά, πχ
Κώδικας [Επιλογή]
on=raw_input(u'Δώσε το όνομα του μαθητή:')
) γιατί θέλω να μην μπερδεύω τους μαθητές με τέτοια και για να είμαι συμβατή με το βιβλίο. Επίσης, να πω ότι σε ubuntu μια χαρά εμφανίζονται τα ελληνικά με τον ίδιο ακριβώς κώδικα. Άρα είναι θέμα των windows. Αυτό ψάχνω.
Τίτλος: Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
Αποστολή από: happiness στις 24 Φεβ 2020, 10:59:54 ΠΜ
Παράθεση από: taxata στις 24 Φεβ 2020, 10:57:41 ΠΜ
Δοκίμασε
cp1253
αντι
UTF8
Κώδικας [Επιλογή]
Äþóå ôï üíïìá ôïõ ìáèçôÞ:
:( Κάτι άλλαξε αλλά και πάλι υπάρχει πρόβλημα.
Τίτλος: Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
Αποστολή από: happiness στις 24 Φεβ 2020, 12:08:31 ΜΜ
Το παρακάτω πρόγραμμα από την άλλη, εμφανίζει κανονικά όλους τους χαρακτήρες
Κώδικας [Επιλογή]
# -*- coding: UTF-8 -*-
num=int(input('Δώσε έναν τριψήφιο αριθμό:'))
while num<100 or num>999:
    num=int(input('Έδωσες λαθος αριθμό. Προσπάθησε ξανά:'))
a=num/100
num = num %100
b=num /10
c=num%10
sum =a+b+c
print 'Άθροισμα ψηφίων', sum

Βλέπετε εσείς κάτι που να προκαλεί την διαφορά αυτή σε σχέση με το παραπάνω πρόγραμμα που δεν δουλεύει;
Τίτλος: Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
Αποστολή από: bugman στις 24 Φεβ 2020, 12:43:09 ΜΜ
Το αρχείο του κώδικα το γράφεις με το  notepad?
Τίτλος: Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
Αποστολή από: happiness στις 24 Φεβ 2020, 01:57:01 ΜΜ
Παράθεση από: bugman στις 24 Φεβ 2020, 12:43:09 ΜΜ
Το αρχείο του κώδικα το γράφεις με το  notepad?
όχι όλα στο IDLE τα κάνω
Τίτλος: Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
Αποστολή από: alkisg στις 24 Φεβ 2020, 02:33:09 ΜΜ
Εμπλέκονται 4 διαφορετικά encodings:
Έτσι, ένας τρόπος να βλέπουμε ελληνικά σε python2 και σε κανονικά παράθυρα και σε παράθυρα τερματικού, είναι να βάλουμε τις παρακάτω γραμμές στην αρχή του αρχείου:

Κώδικας (python) [Επιλογή]

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os

os.system("chcp 65001")
...


Αν ΔΕΝ μας ενδιαφέρουν τα μαύρα τερματικά, και τρέχουμε τα προγράμματα μόνο μέσα από το IDLE, τότε αρκεί το # -*- coding: UTF-8 -*- χωρίς εντολή os.system.

Για να δούμε τι encoding έχει ένα αρχείο, το ανοίγουμε με το notepad, πατάμε αποθήκευση ως, και βλέπουμε τι λέει, π.χ. UTF-8, UTF-8 με BOM, ANSI κλπ.
To IDLE συνήθως είναι αρκετά έξυπνο και αποθηκεύει με αυτό που θα του γράψουμε στην γραμμή κωδικοποίησης, # -*- coding: UTF-8 -*-.
Τίτλος: Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
Αποστολή από: happiness στις 25 Φεβ 2020, 08:06:38 ΠΜ
Παράθεση από: alkisg στις 24 Φεβ 2020, 02:33:09 ΜΜ

  • cp1250/cp1252/cp437: Τα λάθος ρυθμισμένα αγγλικά Windows δεν μπορούν να δείξουν μη-unicode ελληνικά, και δείχνουν π.χ. "Äþóå ôï üíïìá ôïõ ìáèçôÞ". Αυτό διορθώνεται κάνοντας Έναρξη → Εκτέλεση → intl.cpl, και επιλέγοντας γλώσσα για μη unicode προγράμματα τα ελληνικά.
Αυτό φαίνεται να είναι η σωστή λύση. Το έκανα και μέχρι στιγμής σε αυτά που έτρεξα δουλεύει. Ευχαριστώ για άλλη μια φορά alkisg !