在Python中“全局”启用Unicode

3 投票
3 回答
3676 浏览
提问于 2025-04-15 18:44

有没有办法让这个在每个页面都不用写呢?

 # -*- 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,也不会对你代码中任何非字面量的部分产生影响。

撰写回答