TextWrangler、Python Shebang和UTF-8(在Python 2.5中)
以下面的代码为例:TextWrangler、Python Shebang和UTF-8(在Python 2.5中),python,textwrangler,Python,Textwrangler,以下面的代码为例: #! /usr/bin/env python2.5 # -*- coding: utf-8 -*- thing = u'\N{DEGREE SIGN}' print thing 这将在OSX终端上运行,不会出错,但在通过Textwrangler Python解释器运行时,会抛出一个错误。但是,当我翻转前两行时,它在两个位置都不会出错: # -*- coding: utf-8 -*- #! /usr/bin/env python2.5 thing = u'\N{DEGRE
#! /usr/bin/env python2.5
# -*- coding: utf-8 -*-
thing = u'\N{DEGREE SIGN}'
print thing
这将在OSX终端上运行,不会出错,但在通过Textwrangler Python解释器运行时,会抛出一个错误。但是,当我翻转前两行时,它在两个位置都不会出错:
# -*- coding: utf-8 -*-
#! /usr/bin/env python2.5
thing = u'\N{DEGREE SIGN}'
print thing
我的印象是shebang必须位于文件的前两个字节中,因此我认为在第二个示例中它被忽略了。我进一步感到,按照惯例,这是开始剧本的正确方式:
#! /usr/bin/env python2.5
# -*- coding: utf-8 -*-
但并非所有情况都是如此
我是不是遗漏了Textwrangler的一些东西
[编辑]我的用例(Python 2.5)至少在很大程度上是导致问题的原因
[更新]以下在终端和TextWrangler中运行时无错误:
#! /usr/bin/env python2.5
# -*- coding: utf-8 -*-
degreeSign = u'\u00B0'
degreeSign_encoded = degreeSign.encode('utf-8')
print degreeSign_encoded
中的示例一致-编码可以在第一行或第二行,shebang必须在第一行。谢谢@jornsharpe。我已经阅读了PEP,一直使用这个标准,直到我遇到这个问题的TextWranger。我想知道TextWrangler在运行脚本时是否会自动插入一个shebang(有效地)将UTF编码行强制到第3行……接下来,我从TextWrangler支持中了解到,当shebang被忽略时——正如在第2行时所预期的那样——TextWrangler使用Python 2.7.5(在我的例子中)而不是2.5。编辑OP以使其更具体。