繁体   English   中英

由于 UTF-8 BOM(字节顺序标记),找不到 Shebang 可执行文件

[英]Shebang executable not found because of UTF-8 BOM (Byte Order Mark)

由于某种原因,我的一个脚本中的 shebang 不起作用:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "Hello World"

当我执行这个文件时,我收到一个错误

 % ./test.py
./test.py: 1: #!/usr/bin/env: not found

我的/usr/bin/目录的内容没有问题: envpython都在,执行权限正确。

这是由于 Unix 和 Linux 处理 shebang 的方式。 #! 必须是文件中的前两个字节 如果您有 BOM,那么这不再是正确的,因此会出现错误。

请注意,从 python 解释器的角度来看,放置 BOM 完全没有用,因为# -*- coding: utf-8 -*-已经告诉 python 编码。

AFAIK BOM 通常与 utf-8 一起使用。 它用于 UTF-16 et similia 以指定字节顺序。 如果编辑器采用错误的编码,您应该能够使用正确的编码显式打开文件。

问题的原因是我的文件是使用带有 BOM(字节顺序标记)的 UTF8编码的

删除 BOM,即使用没有 BOM 的 UTF8 编码文件解决了这个问题。

注意:对于 Notepad++ 用户,“没有 BOM 的 UTF8”在编辑器中也被称为(奇怪的)“ANSI as UTF-8”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM