我在PowerShell(PS)上运行一个简单的:echo print "Hello!!" > prog.py
。一切顺利,直到我将.py
程序设置为默认运行IDLE.bat
。
一旦我这样做,当我输入.\prog.py
时,PowerShell会运行Idle,所以我有了一个很棒的想法"将.py
设置为与PS一起运行。
我再次将Idle设置为.py
的默认程序,但现在我无法从PS创建我的.py
文件,我注意到它插入了字符,在print
和Hello
之间回车。 ÿþp r i n t
H e l l o
,以及所有字母之间的空格。像这样:
python prog.py
运行PS C:\> python prog.py
File "prog.py", line 1
SyntaxError: Non-ASCII character '\xff' in file prog.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
我得到一个SyntaxError,如下所示:
if num not in my_lst
PS会丢失编码吗?我该如何解决这个问题?
我正在使用Win10(PSv5.0); Python 2.7.11
答案 0 :(得分:1)
ÿþ
是字节顺序标记。您正在查看Windows Unicode,即UCS-2 LE或UTF-16,它是.Net Framework使用的常见编码格式。 "空格"正在发生,因为Python并没有将文件解释为使用多字节字符进行编码,就是这样。
尝试明确指定编码:
Write-Output 'print "Hello World!!"' | Out-File -FilePath .\prog.py -Encoding ascii