Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TextWrangler、Python Shebang和UTF-8(在Python 2.5中)_Python_Textwrangler - Fatal编程技术网

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以使其更具体。