Dangers du sys.setdefaultencoding('utf-8')

Il y a une tendance à décourager la configuration sys.setdefaultencoding('utf-8') en Python 2. Quelqu'un peut-il la liste des exemples concrets de problèmes avec ça? Des Arguments comme it is harmful ou it hides bugs n'est pas très convaincante.

Mise à JOUR: Veuillez noter que cette question n'est que d'environ utf-8, il n'est pas sur la modification de codage par défaut "dans le cas général".

Veuillez donner quelques exemples avec le code si vous le pouvez.

  • comment voulez-vous l'utiliser? Si vous parlez de la modification de sitecustomize.py ensuite, lorsque le code est exécuté sur d'autres ordinateurs, vous pourriez bien avoir des bugs
  • Si vous avez une décoder ou encoder erreur c'est probablement pour une raison évidente, je.e s = u'é' str(s) . Vous devez travailler avec un type string ou unicode et de gérer l'encodage explicite.
  • stackoverflow.com/questions/28642781/..., pas de paramètres globaux - application seule.
  • peut-être pertinent mail.python.org/pipermail/python-dev/2009-August/091406.html Vous pouvez obtenir des effets bizarres causé par le fait que certains objets string allons maintenant comparer l'égalité ne sont pas nécessairement avoir la même valeur de hachage. Unicode objets et les chaînes de caractères ont la même valeur de hachage pour autant qu'ils sont à la fois ASCII. Avec l'ASCII codage par défaut, un non-ASCII chaîne ne peut pas être comparé à un objet Unicode, donc le problème ne se produit pas.
  • UTF-8 chaîne n'est pas un objet Unicode encore, et quel que soit le codage de ces objets string ne se comparent égales si elles ont un contenu différent. Sauf si il y a un bug dans Python fonction de hachage,
  • Parce que vous êtes l'incompréhension comment Python fonctionne avec des encodages si vous pensez que vous en avez besoin. Voici une présentation de comment l'utiliser correctement: farmdev.com/talks/unicode – Que d'un côté, si l'argument “il se cache bugs” ne semble pas convaincant, que peut-être le véritable problème. (Et oui, Unicode Python 2 suce. Mais sys.setdefaultencoding n'est pas la solution.) Et enfin, si vous voulez voir un bug, il provoque, ne cherchez pas plus loin: stackoverflow.com/a/28627705/1968
  • c'est pourquoi je demande un exemple réel que je peux comprendre.
  • voici un exemple d'une question lorsqu'un utilisateur a vissé parce que l'Auteur de PyDev pense que c'est une bonne idée de mettre en sys.setdefaultencoding('utf-8'). Voici un blog de quelqu'un d'autre qui a vissé par cette avec quelques détails de plus en plus de liens.
  • Une belle annonce aujourd'hui sur le sujet: anonbadger.wordpress.com/2015/06/16/...