在Python中“全局”启用Unicode
有没有办法让这个在每个页面都不用写呢?
# -*- coding: utf-8 -*-
我希望Python能默认这样设置。
3 个回答
-1
在Python 2中,这样做是个很糟糕的主意,因为你会期待一些只在你自己开发机器上才能看到的行为。这就意味着,当你把这个库发给别人,或者放到服务器上,或者其他地方使用时,任何使用它的地方都会在日志中出现很多UnicodeDecodeError
的错误信息。
1
这是Python 3.0的一个特点。
这是在Python 3中做的一个改动,因为这样会影响到之前版本的兼容性,所以在2.x版本中你找不到这样的全局选项。
8
在Python 3中,默认的编码方式是UTF-8,所以你不需要再手动设置了。不过,实际上并没有办法“全局”设置默认的源代码编码,而且历史经验告诉我们,这种全局选项通常不是个好主意。(比如,Python中的-U和-Q选项,以及以前的sys.setdefaultencoding()。)你不能(直接)控制你程序中所有被导入的源代码,因为它包括了标准库和你直接或间接使用的任何第三方模块。
另外要注意的是,这并不是在启用Unicode,虽然你问题的标题是这么说的。它的作用是将源代码的编码设置为UTF-8,这意味着在Unicode字面量中任何非ASCII字符(例如u'spæm'
)都会按照这种编码来解释。它不会让非Unicode字面量('spam'
和"spam"
)突然变成Unicode,也不会对你代码中任何非字面量的部分产生影响。