Is it possible to avoid having to put this in every page?
# -*-开发者_高级运维 coding: utf-8 -*-
I'd really like Python to default to this.
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.
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
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.
精彩评论