Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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语法错误:非UTF-8_Python_Python 3.x_Encoding_Utf 8_Py2app - Fatal编程技术网

Python语法错误:非UTF-8

Python语法错误:非UTF-8,python,python-3.x,encoding,utf-8,py2app,Python,Python 3.x,Encoding,Utf 8,Py2app,我将Python脚本转换为Mac.app(通过py2app)。我尝试运行它,但出现以下错误: SyntaxError: Non-UTF-8 code starting with '\xcf' in file py2app/dist/myapp.app/Contents/MacOS/myapp on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 我访问了政治公众人物

我将Python脚本转换为Mac.app(通过py2app)。我尝试运行它,但出现以下错误:

SyntaxError: Non-UTF-8 code starting with '\xcf' in file 
py2app/dist/myapp.app/Contents/MacOS/myapp on line 1, but no encoding declared; see 
http://python.org/dev/peps/pep-0263/ for details
我访问了政治公众人物网站,并在脚本的前两行添加了以下内容:

#!/usr/bin/python
# -*- coding: utf-8 -*-
我还将代码放入各种在线工具(如)中,以检查是否存在任何非UTF-8字符,但我没有发现任何问题

我确实从Excel文件中复制了一些文本,但是我不知道有什么特殊的符号

脚本大约有800行,因此是否有一种方法可以识别问题,而不需要手动逐行扫描脚本

编辑


不完全是一个修复,但将我的脚本转换为可执行文件而不是.app已经解决了这个问题,现在它可以正常运行。

Python3使用UTF-8作为默认编码。这简化了您从Internet(和其他软件包)获得的代码\xcf仅当前面的字节具有预定义值时才有效,但情况并非如此:
非UTF8代码起始
意味着,它不是UTF8码点编码的有效起始(第一个字节)

正如您在注释中看到的,您可以将文件转换为UTF-8,很多时候您可以忽略初始编码(这些错误通常来自注释,例如作者姓名)。您可以对其进行转换,例如,在原始编辑器上的
另存为
中的选项上进行转换


另一种方法是,您可以在代码的前几行指定编码,请参见关于如何执行。注意:Python有硬编码的字节字符串要检查[因为它不知道编码],所以请尝试完全复制该文档中的字符串。我认为这样的行
#-*-编码:拉丁-1-*-
应该可以,但这可能会误解一些字符,所以请测试您的程序。如果您不知道原始编码,转换原始源代码的方法就更简单(因为您应该在任何情况下检查源代码中的所有字符串,并检查您是否猜到了正确的编码)。

Python 3使用UTF-8作为默认编码。这简化了您从Internet(和其他软件包)获得的代码\xcf仅当前面的字节具有预定义值时才有效,但情况并非如此:
非UTF8代码起始
意味着,它不是UTF8码点编码的有效起始(第一个字节)

正如您在注释中看到的,您可以将文件转换为UTF-8,很多时候您可以忽略初始编码(这些错误通常来自注释,例如作者姓名)。您可以对其进行转换,例如,在原始编辑器上的
另存为
中的选项上进行转换


另一种方法是,您可以在代码的前几行指定编码,请参见关于如何执行。注意:Python有硬编码的字节字符串要检查[因为它不知道编码],所以请尝试完全复制该文档中的字符串。我认为这样的行
#-*-编码:拉丁-1-*-
应该可以,但这可能会误解一些字符,所以请测试您的程序。如果您不知道原始编码,转换原始源代码的方法就更简单了(因为在任何情况下都应该检查源代码中的所有字符串,并检查您是否猜到了正确的编码).

也许可以看看你是否有这些字符:如果你复制/粘贴到一个在线UTF-8检查器中,那么你的编辑通过复制/粘贴缓冲区与你的浏览器交谈可能会在途中转换文本。请尝试
iconv-t UTF-16le文件>/dev/null
并检查错误输出。@triplee使用该命令没有错误输出。。。到目前为止,我运行的每一次检查都告诉我这都是UTF-8。你能添加一个十六进制转储的
py2app/dist/myapp.app/Contents/MacOS/myapp
吗?(MacOS有一个命令
xxd
;如果输出过多,可能会删减输出。)也许可以看看你是否有这些字符:如果你复制/粘贴到一个在线UTF-8检查器中,那么你的编辑通过复制/粘贴缓冲区与你的浏览器交谈,可能会在途中转换文本。尝试
iconv-t UTF-16le file>/dev/null
并检查错误输出。@triplee使用该命令没有错误输出。。。到目前为止,我运行的每一次检查都告诉我这都是UTF-8。你能添加一个十六进制转储的
py2app/dist/myapp.app/Contents/MacOS/myapp
吗?(MacOS有一个命令
xxd
;如果输出过多,可能会删减输出。)