SNI*_*dog 265 python unicode python-unicode
说我有一个功能:
def NewFunction():
return '£'
Run Code Online (Sandbox Code Playgroud)
我想在它前面打一些带有井号的东西,当我尝试运行这个程序时它会输出错误,显示以下错误信息:
SyntaxError: Non-ASCII character '\xa3' in file 'blah' but no encoding declared;
see http://www.python.org/peps/pep-0263.html for details
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何在返回功能中加入英镑符号?我基本上是在课堂上使用它,它'__str__'包含在包含英镑符号的部分内.
Sil*_*Ray 356
我建议阅读错误给你的PEP.问题是您的代码尝试使用ASCII编码,但井号符号不是ASCII字符.尝试使用UTF-8编码.您可以从# -*- coding: utf-8 -*-.py文件的顶部开始.要获得更高级的功能,您还可以在代码中逐个字符串地定义编码.但是,如果您尝试将英镑符号文字放入代码中,则需要一个支持整个文件的编码.
tuc*_*son 293
添加以下两行坐在我的.py脚本的顶部为我工作(第一行是必要的):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
pla*_*aes 55
首先将该# -*- coding: utf-8 -*-行添加到文件的开头,然后u'foo'用于所有非ASCII unicode数据:
def NewFunction():
return u'£'
Run Code Online (Sandbox Code Playgroud)
或者使用自Python 2.6以来可用的魔法使其自动化:
from __future__ import unicode_literals
Run Code Online (Sandbox Code Playgroud)
小智 12
在脚本中添加以下两行为我解决了这个问题。
# !/usr/bin/python
# coding=utf-8
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你 !
tri*_*eee 11
错误消息告诉您究竟出了什么问题.Python解释器需要知道非ASCII字符的编码.
如果你想返回U + 00A3那么你可以说
return u'\u00a3'
Run Code Online (Sandbox Code Playgroud)
它通过Unicode转义序列以纯ASCII表示此字符.如果要返回包含文字字节0xA3的字节字符串,那就是
return b'\xa3'
Run Code Online (Sandbox Code Playgroud)
(在Python 2中,它b是隐式的;但显式优于隐式).
在错误信息的链接PEP指示您究竟如何来告诉Python"这个文件不是纯ASCII;这里是我使用的编码".如果编码是UTF-8,那就是
# coding=utf-8
Run Code Online (Sandbox Code Playgroud)
或与Emacs兼容
# -*- encoding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
如果您不知道编辑器使用哪种编码来保存此文件,请使用十六进制编辑器和一些谷歌搜索来检查它.Stack Overflow 字符编码标签有一个标签信息页面,其中包含更多信息和一些故障排除提示.
在许多词中,在7位ASCII范围(0x00-0x7F)之外,Python不能也不能猜测字节序列代表什么字符串.https://tripleee.github.io/8bit#a3显示字节0xA3执行21个可能的解释,并从传统的8位编码是唯一; 但它也可能是多字节编码的第一个字节.但事实上,我猜你实际上是在使用Latin-1,所以你应该拥有
# coding: latin-1
Run Code Online (Sandbox Code Playgroud)
作为源文件的第一行或第二行.无论如何,在不知道该字节应该代表哪个字符的情况下,人类也无法猜测这一点.
您可能正在尝试使用 Python 2 解释器运行 Python 3 文件。当前(截至 2019 年)python,在 Windows 和大多数 Linux 发行版上安装两个版本时,命令默认为 Python 2。
但是,如果您确实在处理 Python 2 脚本,本页尚未提及的解决方案是以 UTF-8+BOM 编码重新保存文件,这将在文件开头添加三个特殊字节,它们将明确通知 Python 解释器(和您的文本编辑器)有关文件编码的信息。
| 归档时间: |
|
| 查看次数: |
342938 次 |
| 最近记录: |