303

関数があるとします:

def NewFunction():
    return '£'

前にポンド記号を付けて印刷したいのですが、このプログラムを実行しようとするとエラーが表示され、次のエラーメッセージが表示されます。

SyntaxError: Non-ASCII character '\xa3' in file 'blah' but no encoding declared;
see http://www.python.org/peps/pep-0263.html for details

return 関数にポンド記号を含める方法を教えてもらえますか? 基本的に授業で使ってい'__str__'てシャープ記号が入っている部分です。

4

6 に答える 6

382

エラーによって得られる PEP を読むことをお勧めします。問題は、コードが ASCII エンコーディングを使用しようとしているのに、ポンド記号が ASCII 文字ではないことです。UTF-8 エンコーディングを使用してみてください。# -*- coding: utf-8 -*-.py ファイルの先頭に置くことから始めることができます。さらに高度にするために、コード内で文字列ごとにエンコーディングを定義することもできます。ただし、ポンド記号リテラルをコードに入れようとしている場合は、ファイル全体でそれをサポートするエンコーディングが必要になります。

于 2012-05-14T19:16:26.153 に答える
337

.py スクリプトの先頭に次の 2 行を追加するとうまくいきました (最初の行が必要でした)。

#!/usr/bin/env python
# -*- coding: utf-8 -*- 
于 2013-11-06T09:29:23.467 に答える
59

# -*- coding: utf-8 -*-最初にファイルの先頭に行を追加してから、u'foo'すべての非 ASCII Unicode データに使用します。

def NewFunction():
    return u'£'

または、Python 2.6 以降で利用可能な魔法を使用して自動化します。

from __future__ import unicode_literals
于 2012-05-14T19:21:26.923 に答える