I'm thinking of making this downstream change to Fedora's site.py (and possibly in future RHEL releases) so that the default encoding automatically picks up the encoding from the locale:
def setencoding(): """Set the string encoding used by the Unicode implementation. The default is 'ascii', but if you're willing to experiment, you can change this.""" encoding = "ascii" # Default value set by _PyUnicode_Init() - if 0: + if 1: # Enable to support locale aware default string encodings. import locale loc = locale.getdefaultlocale() if loc[1]: encoding = loc[1] if 0: # Enable to switch off string to Unicode coercion and implicit # Unicode to string conversion. encoding = "undefined" if encoding != "ascii": # On Non-Unicode builds this will raise an AttributeError... sys.setdefaultencoding(encoding) # Needs Python Unicode build ! I've written up extensive notes on the change and the history of the issue here: https://fedoraproject.org/wiki/Features/PythonEncodingUsesSystemLocale Please let me know if there are any errors on that page! The aim is to avoid strange behavior changes when running a script within a shell pipeline/cronjob as opposed to at a tty (and to capture some of the bizarre cornercases, for example, I found the behavior of the pango/pygtk modules particularly surprising). I mention it here as a "heads-up" about the change: - in case other distributions may want to do the same (or already do so, though in my very brief survey no-one else seemed to), and - in case doing so breaks things in a way I'm not expecting; can anyone see any flaws in my arguments? - in case other people find my notes on the issue useful Hope this is helpful; can anyone see any potential problems with this change? Dave _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com