python 2中的非ASCII字符
如上所述,Python 2(在我的例子中特别是2.7)需要一个神奇的注释行来指定文件编码: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
# -*- 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来运行它。