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

时间:2013-12-30 11:54:35

标签: python python-2.7 python-3.x unicode character-encoding

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

print('(ノಠ益ಠ)ノ彡┻━┻')

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

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

1 个答案:

答案 0 :(得分:6)

Python 3 uses utf-8 as the default source code encoding

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