假设我有一个包含以下内容的.py文件
print('(ノಠ益ಠ)ノ彡┻━┻')
当被python3调用时,它打印出一个愤怒的家伙翻转一个表,但是在python2上我们得到SyntaxError
并且需要在文件中添加一个如# coding: utf-8
的声明行来运行它。
我的问题是为什么python 3不关心非ascii字符?我在PEP 0263中没有看到任何描述。当我没有指定文件的编码时,解释器如何正确地猜测文件的编码?
答案 0 :(得分:6)
Python 3 uses utf-8
as the default source code encoding。
Python 2 uses ASCII
by default,所以除非你明确告诉文件顶部的Python # -*- coding: utf-8 -*-
,否则它不知道如何处理127以上的字符值。