在Python中启用Unicode“全局”

时间:2010-02-01 18:57:42

标签: python unicode

是否可以避免将其放在每个页面中?

 # -*- coding: utf-8 -*-

我真的很喜欢Python默认这个。提前谢谢!

3 个答案:

答案 0 :(得分:9)

在Python 3中,默认编码为UTF-8,因此您不需要再显式设置它。但是,没有一种方法可以“全局”设置默认的源编码,历史记录显示这样的全局选项通常是一个坏主意。 (例如,Python的-U和-Q选项,以及sys.setdefaultencoding(),当我们拥有它时。)你没有(直接)控制在程序中导入的所有源,因为它包含标准库和您直接或间接使用的任何第三方模块。

另请注意,这不是启用Unicode,正如您的问题标题所示。它的作用是使源编码为UTF-8,这意味着将使用该编码解释unicode文字中的任何非ASCII字符(例如u'spæm')。它不会使非unicode文字('spam'"spam")突然unicode,也不会对代码中的任何地方的非文字做任何事情。

答案 1 :(得分:1)

这是Python 3.0的一个功能

这是在Python 3中完成的事情之一,因为它会破坏向后兼容性,所以你不会在2.x中找到这样的全局选项

答案 2 :(得分:0)

对于Python 2来说,这是一个非常糟糕的主意,因为您将期望只在您的开发机器上预设的行为。这意味着当您的图书馆与其他人,或主机服务器或其他地方联系时,任何对它的使用都会使日志充满UnicodeDecodeError秒。