Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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
python 2中的非ASCII字符_Python_Python 2.7_Non Ascii Characters - Fatal编程技术网

python 2中的非ASCII字符

python 2中的非ASCII字符,python,python-2.7,non-ascii-characters,Python,Python 2.7,Non Ascii Characters,如上所述,Python 2(在我的例子中特别是2.7)需要一个神奇的注释行来指定文件编码: # -*- coding: utf-8 -*- 否则,就不可能在文件中包含非ASCII字符。会出现一个臭名昭著的错误: SyntaxError: Non-ASCII character '[…]' in file […] on line […], but no encoding declared; see http://python.org/dev/peps/pep-0263/ 但是,如果非ASCII

如上所述,Python 2(在我的例子中特别是2.7)需要一个神奇的注释行来指定文件编码:

# -*- coding: utf-8 -*-
否则,就不可能在文件中包含非ASCII字符。会出现一个臭名昭著的错误:

SyntaxError: Non-ASCII character '[…]' in file […] on line […], but no encoding declared; see http://python.org/dev/peps/pep-0263/
但是,如果非ASCII字符位于shebang解释器路径中,则magic注释不起作用:

#!/Users/naïve/project/python2.7
# -*- coding: utf-8 -*-
print 'Hello.'
例如,如果您在具有非ASCII路径的文件夹中创建了一个
virtualenv
,就会发生这种情况:创建了许多具有中断脚本的shebang的脚本

我能想到的唯一解决办法是将文件夹符号链接到某个仅ASCII的路径中。然后可以将shebang路径更改为ASCII路径。或者在
virtualenv
的情况下,从符号链接路径对其进行初始化


但是,如果路径的非ASCII部分是用户的主路径,并且用户没有管理权限,则无法执行此操作。所以我想问:对于这种情况,有没有其他的解决方法,希望更干净?例如,如果Python找不到神奇注释,它会使用一些默认的文件编码设置或环境变量?

如果将文件保存为
utf-8-sig
而不是
utf-8
,则根本不需要编码cookie。也就是说,在保存文件时使用


在python中,可以使用
utf-8-sig
作为编码参数。在VIM中,您可以使用
:set bomb
显式保存带有BOM的文件。

。当我用BOM保存文件时,系统(macOS)完全忽略了shebang。它以
bash
脚本而不是指定的Python来运行它。