1. 程式人生 > >SyntaxError: Non-ASCII character '\xe4' in file t.py on line 3, but no encoding declared

SyntaxError: Non-ASCII character '\xe4' in file t.py on line 3, but no encoding declared

問題

報錯程式碼

#!/usr/bin/python

s = "你好"

print s

執行報錯:

File “t.py”, line 3
SyntaxError: Non-ASCII character ‘\xe4’ in file t.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

這個python程式碼編碼方式問題。
預設情況下,python使用ascii對程式碼進行編碼。如果遇到程式碼中含有中文的情況,由於中文不在ascii編碼範圍(0~255),所以編碼異常。

解決辦法

在python檔案開頭新增

# -*- coding: utf-8 -*-

將上面的例子程式碼修改成:

#!/usr/bin/python
# -*- coding: utf-8 -*-
s = "你好"

print s

執行就不會報錯:

你好

與sys.getdefaultencoding() 的區別

sys.getdefaultencoding() 的編碼是對程式碼中字串的編碼。
coding:utf-8 是對原始碼檔案的編碼。

參考