is it possible to avoid having to put this in every page?
# -*- coding: utf-8 -*-
I'd really like Python to default to this. Thanks in advance!
is it possible to avoid having to put this in every page?
# -*- coding: utf-8 -*-
I'd really like Python to default to this. Thanks in advance!
This is a feature of Python 3.0
It was one of the things that was done in Python 3 because it would break backward compatibility, so you won't find such a global option in 2.x
In Python 3, the default encoding is UTF-8, so you won't need to set it explicitly anymore. There isn't a way to 'globally' set the default source encoding, though, and history has shown that such global options are generally a bad idea. (For instance, the -U and -Q options to Python, and sys.setdefaultencoding() back when we had it.) You don't (directly) control all the source that gets imported in your program, because it includes the standard library and any third-party modules you use directly or indirectly.
Also note that this isn't enabling Unicode, as your question title suggests. What it does is make the source encoding UTF-8, meaning that any non-ASCII characters in unicode literals (e.g. u'spæm'
) will be interpreted using that encoding. It won't make non-unicode literals ('spam'
and "spam"
) suddenly unicode, nor will it do anything for non-literals anywhere in your code.
It's a very bad idea for Python 2 because you will be expecting behavior which is only preset on your dev machine. Which means that when your library goes out to someone else, or to a host server, or elsewhere, any use of it will flood the logs with UnicodeDecodeError
s.