Cloud9 Unicode 错误 - 导入系统不起作用
Cloud9 Unicode Error - Import Sys Does Not Work
当我 运行 下面的代码 运行 在 Cloud9 IDE 中使用 [=33] 的默认版本 python 代码时,我收到以下错误=] (2.7.6):
import urllib
artistValue = "Sigur Rós"
artistValueUrl = urllib.quote(artistValue)
SyntaxError: Non-ASCII character '\xc3' in file /home/ubuntu/workspace/test.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
我阅读以适应下面的代码是一种解决方法。
import urllib
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
artistValue = "Sigur Rós"
artistValueUrl = urllib.quote(artistValue)
当我尝试此操作时,出现红色 x 弹出错误,内容为:
Module 'sys' has no 'setdefaultencoding' member"
如果我 运行 代码我仍然得到语法错误。
为什么会这样,我该怎么办?
编辑:
我还尝试了所选答案中的以下内容:
import urllib
print urllib.quote(u"Sigur Rós")
当我 运行 它时,我收到以下错误:
SyntaxError: Non-ASCII character '\xc3' in file
/home/ubuntu/workspace/test.py on line 2, but no encoding declared;
see http://www.python.org/peps/pep-0263.html for details
好吧,这有点奇怪。 Python 解释器应该 SyntaxError
抱怨你的源代码中的非 ASCII 字符,如果你不在脚本的开头 declare an encoding ; OTOH,如果您 已经 声明了一种编码(或者 Cloud9 自动执行),那么 Python 解释器应该将其视为 UTF-8 编码字符串。
我不熟悉 Cloud9,所以我不能保证这个 会 有效,但它应该有效。 :)
使您的字符串成为 Unicode 字符串(通过使用 u
字符串前缀),然后将其显式编码为 UTF-8:
import urllib
artistValue = u"Sigur Rós"
artistValueUrl = urllib.quote(artistValue.encode('utf-8'))
print artistValueUrl
输出
Sigur%20R%C3%B3s
编辑
如果你 运行 会发生什么:
# -*- coding: utf-8 -*-
import urllib
print urllib.quote("Sigur Rós")
以下应该有效。当然,这不是将此类字符串输入脚本的实用方法,我只是想了解 Cloud9 正在做什么。
import urllib
print urllib.quote("Sigur R\xc3\xb3s")
我猜你也可以试试这个,这样我们就可以看到它产生了什么错误信息:
import urllib
print urllib.quote(u"Sigur Rós")
当我 运行 下面的代码 运行 在 Cloud9 IDE 中使用 [=33] 的默认版本 python 代码时,我收到以下错误=] (2.7.6):
import urllib
artistValue = "Sigur Rós"
artistValueUrl = urllib.quote(artistValue)
SyntaxError: Non-ASCII character '\xc3' in file /home/ubuntu/workspace/test.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
我阅读以适应下面的代码是一种解决方法。
import urllib
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
artistValue = "Sigur Rós"
artistValueUrl = urllib.quote(artistValue)
当我尝试此操作时,出现红色 x 弹出错误,内容为:
Module 'sys' has no 'setdefaultencoding' member"
如果我 运行 代码我仍然得到语法错误。
为什么会这样,我该怎么办?
编辑: 我还尝试了所选答案中的以下内容:
import urllib
print urllib.quote(u"Sigur Rós")
当我 运行 它时,我收到以下错误:
SyntaxError: Non-ASCII character '\xc3' in file /home/ubuntu/workspace/test.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
好吧,这有点奇怪。 Python 解释器应该 SyntaxError
抱怨你的源代码中的非 ASCII 字符,如果你不在脚本的开头 declare an encoding ; OTOH,如果您 已经 声明了一种编码(或者 Cloud9 自动执行),那么 Python 解释器应该将其视为 UTF-8 编码字符串。
我不熟悉 Cloud9,所以我不能保证这个 会 有效,但它应该有效。 :)
使您的字符串成为 Unicode 字符串(通过使用 u
字符串前缀),然后将其显式编码为 UTF-8:
import urllib
artistValue = u"Sigur Rós"
artistValueUrl = urllib.quote(artistValue.encode('utf-8'))
print artistValueUrl
输出
Sigur%20R%C3%B3s
编辑
如果你 运行 会发生什么:
# -*- coding: utf-8 -*-
import urllib
print urllib.quote("Sigur Rós")
以下应该有效。当然,这不是将此类字符串输入脚本的实用方法,我只是想了解 Cloud9 正在做什么。
import urllib
print urllib.quote("Sigur R\xc3\xb3s")
我猜你也可以试试这个,这样我们就可以看到它产生了什么错误信息:
import urllib
print urllib.quote(u"Sigur Rós")