说我有一个函数:
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
谁能告诉我怎么可以加入我的返回功能英镑符号? 我基本上用它在一个类,它的内'__str__'
的井号包括一部分。
我建议你读的是人教版的错误给你。 问题是,你的代码试图使用ASCII编码,但英镑符号不是ASCII字符。 尝试使用UTF-8编码。 您可以通过将启动# -*- coding: utf-8 -*-
在你的.py文件的顶部。 为了得到更高级的,你还可以在你的代码串由字符串基础定义的编码。 但是,如果你试图把英镑符号在字面到您的代码,你需要支持它的整个文件的编码。
添加以下两行坐在我的.py脚本的顶部为我工作(第一行是必要的):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
首先添加# -*- coding: utf-8 -*-
行到文件的开头,然后用u'foo'
的所有非ASCII Unicode数据:
def NewFunction():
return u'£'
或使用可用的魔力因为Python 2.6,使其自动:
from __future__ import unicode_literals
该错误消息告诉你到底出了什么问题。 Python解释器需要知道非ASCII字符的编码。
如果你想返回U + 00A3那么你可以说
return u'\u00a3'
这代表了一个Unicode转义序列的方式在纯ASCII这个角色。 如果你想返回一个包含文字字节0xA3执行字节串,这是
return b'\xa3'
(其中,在Python 2中的b
是隐式的,但是明确的是优于隐式)。
在错误信息的链接PEP指示你到底如何来告诉Python“这个文件不是纯ASCII;这里是我使用的编码”。 如果编码为UTF-8,这将是
# coding=utf-8
或Emacs的兼容
# -*- encoding: utf-8 -*-
如果你不知道哪个编码编辑器用来保存此文件,具有类似十六进制编辑器和一些谷歌上搜索研究它。 堆栈溢出字符编码标签都有一个标签信息页面提供更多信息和一些故障排除技巧。
在这么多的话,7位ASCII范围(为0x00-0x7F)外,Python不能,不能猜测的字符串字节序列代表。 https://tripleee.github.io/8bit#a3显示字节0xA3执行21个可能的解释,并从传统的8位编码是唯一; 但它也很可能是一个多字节编码的第一个字节。 但事实上,我对你实际使用的是Latin-1的猜想,所以你应该有
# coding: latin-1
作为源文件的第一或第二线。 无论如何,没有知识,字符的字节应该代表,人类将无法猜到这一点,无论是。