Αποστολέας Θέμα: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE  (Αναγνώστηκε 1069 φορές)

happiness

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 250
Στα windows 10 που χρησιμοποιώ IDLE 2.7.10 (την έκδοση του βιβλίου δηλαδή), έχω πρόβλημα με την εμφάνιση ελληνικών χαρακτήρων στην κονσόλα κατά την εκτέλεση του προγράμματος (αλλά και κατά την εκτέλεση μεμονομένων εντολών). Όταν μία εντολή στο py αρχείο περιέχει ελληνικά
Κώδικας: [Επιλογή]
raw_input('Δώσε το όνομα του μαθητή:')
 εμφανίζεται κάτι τέτοιο:
Κώδικας: [Επιλογή]
Δώσε το όνομα του μαθητή:Όταν δίνω μεμονομένη εντολή στην κονσόλα πχ
Κώδικας: [Επιλογή]
print 'γεια'πετάει λάθος
Κώδικας: [Επιλογή]
Unsupported characters in inputΈχω χρησιμοποιήσει την εντολή ορισμού του encoding στο αρχέιο
Κώδικας: [Επιλογή]
# -*- coding: UTF-8 -*-Η γραμματοσειρά που χρησιμοποιώ είναι Courier.

happiness

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 250
Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
« Απάντηση #1 στις: 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
...την τελευταία ελληνική έκφραση δηλαδή την εμφανίζει.

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 476
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
« Απάντηση #2 στις: 24 Φεβ 2020, 09:40:34 πμ »
https://docs.python.org/3/howto/unicode.html
Το παραπάνω μπορεί να βοηθήσει.

taxata

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 102
  • Live long and prosper \\//
    • Πληροφορική στο ΕΠΑΛ
Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
« Απάντηση #3 στις: 24 Φεβ 2020, 10:57:41 πμ »
Δοκίμασε
cp1253
αντι
UTF8
Τάσος_Χατζηπαπαδόπουλος
http://users.sch.gr/chatzipap/

happiness

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 250
Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
« Απάντηση #4 στις: 24 Φεβ 2020, 10:58:27 πμ »
Δυστυχώς όχι  :(
Έχω μία βασική κατανόηση για το πως γίνεται η κωδικοποίηση στην python, όμως το πρόβλημά μου εμένα εδώ είναι ότι δεν θέλω να προσθέσω παραπάνω χειρισμό κωδικοποίησης στον κώδικα (πχ εάν προσθέσω το u πριν από κάθε string, τότε εμφανίζονται σωστά, πχ
Κώδικας: [Επιλογή]
on=raw_input(u'Δώσε το όνομα του μαθητή:')) γιατί θέλω να μην μπερδεύω τους μαθητές με τέτοια και για να είμαι συμβατή με το βιβλίο. Επίσης, να πω ότι σε ubuntu μια χαρά εμφανίζονται τα ελληνικά με τον ίδιο ακριβώς κώδικα. Άρα είναι θέμα των windows. Αυτό ψάχνω.

happiness

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 250
Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
« Απάντηση #5 στις: 24 Φεβ 2020, 10:59:54 πμ »
Δοκίμασε
cp1253
αντι
UTF8
Κώδικας: [Επιλογή]
Äþóå ôï üíïìá ôïõ ìáèçôÞ: :( Κάτι άλλαξε αλλά και πάλι υπάρχει πρόβλημα.

happiness

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 250
Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
« Απάντηση #6 στις: 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
Βλέπετε εσείς κάτι που να προκαλεί την διαφορά αυτή σε σχέση με το παραπάνω πρόγραμμα που δεν δουλεύει;

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 476
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
« Απάντηση #7 στις: 24 Φεβ 2020, 12:43:09 μμ »
Το αρχείο του κώδικα το γράφεις με το  notepad?

happiness

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 250
Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
« Απάντηση #8 στις: 24 Φεβ 2020, 01:57:01 μμ »
Το αρχείο του κώδικα το γράφεις με το  notepad?
όχι όλα στο IDLE τα κάνω

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5429
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
« Απάντηση #9 στις: 24 Φεβ 2020, 02:33:09 μμ »
Εμπλέκονται 4 διαφορετικά encodings:
  • UTF-8: το προεπιλεγμένο παντού εκτός από τα Windows. Στην python3 είναι προεπιλεγμένο και στα Windows οπότε δεν υπάρχει ποτέ κανένα θέμα με τις κωδικοποιήσεις, είναι πρόβλημα μόνο της python2.
  • cp1253: Ελληνικά (ANSI) στα Windows. Αυτά χρησιμοποιούν το notepad και το IDLE 2 από προεπιλογής.
  • cp737: Ελληνικά (OEM) στο DOS. Αυτά χρησιμοποιούν οι μαύρες οθόνες των τερματικών, και του cmd και του "διπλό κλικ σε .py αρχείο".
  • cp1250/cp1252/cp437: Τα λάθος ρυθμισμένα αγγλικά Windows δεν μπορούν να δείξουν μη-unicode ελληνικά, και δείχνουν π.χ. "Äþóå ôï üíïìá ôïõ ìáèçôÞ". Αυτό διορθώνεται κάνοντας Έναρξη → Εκτέλεση → intl.cpl, και επιλέγοντας γλώσσα για μη unicode προγράμματα τα ελληνικά.
Έτσι, ένας τρόπος να βλέπουμε ελληνικά σε python2 και σε κανονικά παράθυρα και σε παράθυρα τερματικού, είναι να βάλουμε τις παρακάτω γραμμές στην αρχή του αρχείου:

Κώδικας: Python
  1. #!/usr/bin/env python
  2. # -*- coding: UTF-8 -*-
  3. import os
  4.  
  5. os.system("chcp 65001")
  6. ...

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

Για να δούμε τι encoding έχει ένα αρχείο, το ανοίγουμε με το notepad, πατάμε αποθήκευση ως, και βλέπουμε τι λέει, π.χ. UTF-8, UTF-8 με BOM, ANSI κλπ.
To IDLE συνήθως είναι αρκετά έξυπνο και αποθηκεύει με αυτό που θα του γράψουμε στην γραμμή κωδικοποίησης, # -*- coding: UTF-8 -*-.

happiness

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 250
Απ: Πρόβλημα με εμφάνιση ελληνικών στην κονσόλα του IDLE
« Απάντηση #10 στις: 25 Φεβ 2020, 08:06:38 πμ »

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