Changing the "locale preferred encoding"

character-encoding, locale, python, python-3.x

Solution

In Windows, with Python 3.3+, execute `chcp 65001` in the console or a batch file before running Python in order to change the locale encoding to UTF-8.

Problem

[Using Python 3.2] If I don't provide `encoding` argument to `open`, the file is opened using `locale.getpreferredencoding()`. So for example, on my Windows machine, any time I use `open('abc.txt')`, it would be decoded using `cp1252`. I would like to switch all my input files to `utf-8`. Obviously, I can add `encoding = 'utf-8'` to all my `open` function calls. Or, better, `encoding = MY_PROJECT_DEFAULT_ENCODING`, where the constant is defined at the global level somewhere. But I was wondering if there is a clean way to avoid editing all my `open` calls, by changing the "default" encoding. Is it something I can change by changing the locale? Or by changing a parameter inside the locale? I tried to follow the Python manual but failed to understand how this is supposed to be used. Thanks!

Original source

Related problems