簡體   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