繁体   English   中英

Python 语法错误:非 UTF-8

[英]Python SyntaxError: Non-UTF-8

我将 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

我访问了 PEP 网站并将以下内容添加到脚本的前两行:

#!/usr/bin/python
# -*- coding: utf-8 -*-

我还将我的代码放入各种在线工具(例如这个)中,以检查是否有任何非 UTF-8 字符,但我没有遇到任何问题。

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

该脚本大约有 800 行,所以有没有一种方法可以识别不涉及逐行手动扫描脚本的问题?

编辑

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

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

正如您在评论中看到的,您可以将文件转换为 UTF-8,很多时候您可以忽略初始编码(通常此类错误来自评论,例如作者姓名)。 您可以转换它,例如在原始编辑器的Saving As选项上。

作为一种替代方式,您可以在代码的前几行指定编码,请参阅PEP-263了解如何执行此操作。 注意:Python 有硬编码的字节字符串要检查[因为它不知道编码],所以尽量复制该文件中的字符串。 我认为这样的行# -*- coding: latin-1 -*-应该没问题,但这可能会误解一些字符,所以测试你的程序。 如果您不知道原始编码,则转换原始源代码更简单(因为无论如何您都应该检查源代码中的所有字符串,并检查您是否猜到了正确的编码)。

暂无
暂无

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

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