Comment imprimer utf-8 à la console avec Python 3.4 (Windows 8)?

Je n'ai jamais entièrement enveloppé ma tête autour de codage et de décodage de l'unicode pour les autres formats (utf-8, utf-16, ascii, etc.) mais j'ai atteint un mur qui est à la fois déroutant et frustrant. Ce que j'essaie de faire est d'imprimer utf-8 symboles de carte (♠,♥,♦,♣) à partir d'un module python pour une console windows. La console que j'utilise est git bash et je suis en utilisant console2 comme un front-end. J'ai essayé de lire un certain nombre d'approches ci-dessous et rien n'a fonctionné jusqu'à présent. Laissez-moi savoir si ce que je fais est possible et la bonne façon de le faire.

  • Veillé à ce que la console peut gérer les caractères utf-8.
    Ces deux tests de me faire croire que la console n'est pas le problème.

Comment imprimer utf-8 à la console avec Python 3.4 (Windows 8)?

  • Tenter la même chose à partir du module python.

    Lorsque j'exécute le .py, c'est le résultat.

    print(u'♠')
    UnicodeEncodeError: 'charmap' codec can't encode character '\u2660' in position 0: character maps to <undefined>
  • Tentative de coder ♠.
    Cela me redonne de l'unicode jeu codé en utf-8, mais toujours pas de bêche symbole.

    text = '♠'
    print(text.encode('utf-8'))
    b'\xe2\x99\xa0'

Je crois que je suis un raté une étape ou ne pas comprendre l'ensemble du procédé de codage/décodage. J'ai lu cette, cette, et cette. Le dernier des pages suggère d'emballage le sys.stdout dans le code mais cette article dit à l'aide de stdout est inutile et pointe vers une autre page en utilisant les codecs module.

Je suis tellement confus! J'ai l'impression que la pensée de la qualité de la documentation sur ce sujet est difficile à trouver et j'espère que quelqu'un peut éclaircir ce point. Toute aide est toujours appréciée!

Austin

  • Comment utilisez-vous la .py? Avez-vous essayé le réglage de la PYTHONIOENCODING variable d'environnement?
  • wiki.python.org/moin/PrintFails
  • juste ajouter #encoding: utf-8 au-dessus de votre .py
  • Cette question couvre un certain nombre de solutions possibles: stackoverflow.com/questions/4374455/...
  • Merci à tous. @nneonneo, je suis de l'exécution de ma .py est à partir de la console. Je lance le py puis d'ouvrir un shell interactif à l'aide de cette ligne 'py -3.4 -je myfile.py'. Je tiens également à éviter de faire de grosses modifications comme la manipulation de la "PYTHONIOENCODING'. Mais plus je lis, plus je me rends compte que mon problème réside dans le codage par défaut de la console windows (cp437).
  • S, j'ai certainement venir à travers cet article un certain nombre de fois, mais je suis encore à essayer de donner un sens à tout cela. Il est possible que la réponse se trouve à l'intérieur.
  • la façon dont je le comprends python est source d'encodage est qu'il raconte l'OS d'exécuter le fichier encodage que le fichier doit avoir. Ce qui me confond ici, c'est cela. Un espace interactif de python session, lorsque je lance print(sys.stdout.encoding) il sorties cp437, ce qui est logique puisque c'est l'encodage par défaut de windows. Cependant, si je vous ajoute la suggestion (ou de toute autre source de codage) et de la place que la même ligne dans la .py, il encore sorties cp437. Je ne sais pas si c'est normal ou si il est possible que git bash/windows ne reconnaît pas ma source d'encodage.

InformationsquelleAutor Austin A | 2014-08-04