为什么python3不关心源文件中的非ascii字符?

wim*_*wim 3 python unicode character-encoding python-2.7 python-3.x

假设我有一个包含以下内容的.py文件

print('(????)?????')
Run Code Online (Sandbox Code Playgroud)

当被python3调用时,它打印出一个愤怒的家伙翻转一个表,但是在python2上我们得到SyntaxError并需要# coding: utf-8在文件中添加一个声明行来运行它.

我的问题是为什么python 3不关心非ascii字符?我在PEP 0263中没有看到任何描述.当我没有指定时,解释器如何正确地猜测文件的编码,记录的行为在哪里?

Tim*_*ker 6

Python 3使用utf-8默认的源代码编码.

Python 2 默认使用ASCII,所以除非你# -*- coding: utf-8 -*-在文件的顶部明确告诉Python ,否则它不知道如何处理127以上的字符值.