2010-02-01 4 views

Répondre

9

En Python 3, l'encodage par défaut est UTF-8, vous n'aurez donc plus besoin de le définir explicitement. Cependant, il n'est pas possible de définir globalement le codage source par défaut, et l'historique a montré que ces options globales sont généralement une mauvaise idée. (Par exemple, les options -U et -Q pour Python, et sys.setdefaultencoding() quand nous l'avons eue.) Vous ne contrôlez pas (directement) toutes les sources qui sont importées dans votre programme, car elles incluent la norme bibliothèque et tous les modules tiers que vous utilisez directement ou indirectement.

Notez également que cela n'active pas Unicode, comme le suggère le titre de votre question. Ce qu'il fait est de faire le codage UTF-8 source, ce qui signifie que tous les caractères non-ASCII dans les littéraux Unicode (par exemple u'spæm') seront interprétés en utilisant ce codage. Il ne rendra pas les littéraux non-unicode ('spam' et "spam") soudainement unicode, et ne fera rien pour les non-littéraux n'importe où dans votre code.

+0

* soupir * parfois la vérité est difficile à entendre. ;) merci, thomas. – netricate

+0

"L'encodage par défaut est UTF-8" - malheureusement ce n'est pas vrai du tout. Consultez l'article d'Armin Ronacher suivant: http://lucumr.pocoo.org/2011/12/7/thoughts-on-python3/ pour plus de détails. –

1

Ceci est une fonctionnalité de Python 3.0

Ce fut l'une des choses qui a été fait en Python 3 car cela casserait la compatibilité ascendante, de sorte que vous ne trouverez pas une telle option globale dans 2.x

0

C'est une très mauvaise idée pour Python 2 parce que vous attendez un comportement qui est seulement prédéfini sur votre machine dev. Ce qui signifie que lorsque votre bibliothèque est envoyée à quelqu'un d'autre, ou à un serveur hôte, ou ailleurs, toute utilisation de celle-ci va inonder les journaux avec UnicodeDecodeError s.

Questions connexes