Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';ascii';编解码器可以';t编码字符u'\xe9';_Python_Encoding_Utf 8 - Fatal编程技术网

Python ';ascii';编解码器可以';t编码字符u'\xe9';

Python ';ascii';编解码器可以';t编码字符u'\xe9';,python,encoding,utf-8,Python,Encoding,Utf 8,我已经尝试了所有以前的答案和解决方案 我正在尝试使用此值,它给了我编码相关的错误 ar = [u'http://dbpedia.org/resource/Anne_Hathaway', u'http://dbpedia.org/resource/Jodie_Bain', u'http://dbpedia.org/resource/Wendy_Divine', u'http://dbpedia.org/resource/Jos\xe9_El\xedas_Moreno', u'http://dbpe

我已经尝试了所有以前的答案和解决方案

我正在尝试使用此值,它给了我编码相关的错误

ar = [u'http://dbpedia.org/resource/Anne_Hathaway', u'http://dbpedia.org/resource/Jodie_Bain', u'http://dbpedia.org/resource/Wendy_Divine', u'http://dbpedia.org/resource/Jos\xe9_El\xedas_Moreno', u'http://dbpedia.org/resource/Baaba_Maal']
所以我试着

d = [x.decode('utf-8') for x in ar]
其中:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 31: ordinal not in range(128)
我试过了

 d = [x.encode('utf-8') for x in ar]
这会删除错误,但会更改原始内容

原始值为
u'http://dbpedia.org/resource/Jos\xe9\u El\xedas\u Moreno'
转换为
'http://dbpedia.org/resource/Jos\xc3\xa9\u El\xc3\xadas\u Moreno'
使用
编码时

处理这种情况的正确方法是什么

编辑

当我输入这些链接时会出现错误

req = urllib2.Request()

字符串的第二个版本是原始unicode字符串的正确utf-8表示形式。如果要进行有意义的比较,必须对存储字符串和用户输入字符串使用相同的表示形式。这里明智的做法是始终在内部(代码中)使用Unicode字符串,并确保用户输入和存储的字符串在系统边界(存储子系统和用户输入子系统)从各自的编码正确解码为Unicode


此外,您似乎对unicode和编码有点困惑,因此阅读和可能会有所帮助。

字符串的第二个版本是原始unicode字符串的正确utf-8表示形式。如果要进行有意义的比较,必须对存储字符串和用户输入字符串使用相同的表示形式。这里明智的做法是始终在内部(代码中)使用Unicode字符串,并确保用户输入和存储的字符串在系统边界(存储子系统和用户输入子系统)从各自的编码正确解码为Unicode


另外,您似乎对unicode和编码有点困惑,因此阅读和可能会有所帮助。

python中的unicode字符串是
原始的unicode
,因此请确保它们是
.encode()
.decode()
适当的。使用
utf8
编码被认为是世界各地多个开发团队的最佳实践。 要编码,请使用
urllib2
库中的
quote
函数:

from urllib2 import quote
escaped_string = quote(unicode_string.encode('utf-8'))
要解码,请使用
unquote

from urllib2 import unquote
src = "http://dbpedia.org/resource/Jos\xc3\xa9_El\xc3\xadas_Moreno"
unicode_string = unquote(src).decode('utf-8')

另外,如果您对Unicode和UTF-8工作更感兴趣,请查看python中的Unicode字符串是原始Unicode,因此请确保它们是适当的。使用
utf8
编码被认为是世界各地多个开发团队的最佳实践。 要编码,请使用
urllib2
库中的
quote
函数:

from urllib2 import quote
escaped_string = quote(unicode_string.encode('utf-8'))
要解码,请使用
unquote

from urllib2 import unquote
src = "http://dbpedia.org/resource/Jos\xc3\xa9_El\xc3\xadas_Moreno"
unicode_string = unquote(src).decode('utf-8')

另外,如果您对Unicode和UTF-8工作更感兴趣,请查看Unicode列表中的http://dbpedia.org/resource/Jos\xe9\u El\xedas\u Moreno'
是一种ASCII安全的表示Unicode字符串的方法。当以支持完整西欧字符集(如UTF-8)的形式编码时,它是:
http://dbpedia.org/resource/Jos埃利亚斯·莫雷诺

您的
.encode(“UTF-8”)
是正确的,在UTF-8编辑器或浏览器中看起来应该是正常的。编码后您看到的是UTF-8的ASCII安全表示

例如,你的麻烦字符是é和í

é = 00E9 Unicode = C3A9 UTF-8
í = 00ED Unicode = C3AD UTF-8

简而言之,您的
.encode()
方法是正确的,应该用于写入文件或浏览器。

在您的Unicode列表中,
u'http://dbpedia.org/resource/Jos\xe9\u El\xedas\u Moreno'
是一种ASCII安全的表示Unicode字符串的方法。当以支持完整西欧字符集(如UTF-8)的形式编码时,它是:
http://dbpedia.org/resource/Jos埃利亚斯·莫雷诺

您的
.encode(“UTF-8”)
是正确的,在UTF-8编辑器或浏览器中看起来应该是正常的。编码后您看到的是UTF-8的ASCII安全表示

例如,你的麻烦字符是é和í

é = 00E9 Unicode = C3A9 UTF-8
í = 00ED Unicode = C3AD UTF-8

简而言之,您的
.encode()
方法是正确的,应该用于写入文件或浏览器。

您希望对数据执行的操作可能重复?ASCII编码不支持这些字符。这就是为什么我们有uff-8这样的编码。如果您打算在野外使用此应用程序,我强烈建议您跳过ASCII。如果您已经有unicode字符串,则不希望
将其解码()
为unicode字符串。:-)您可能希望与需要非unicode字符串的内容交互,这意味着通过
encode()
将其放入可接受的编码中。现在,这通常是UTF-8,但这实际上取决于您尝试做什么以及您正在与之交互的服务。@SiddharthShukla:我将此链接存储到我的solr数据库中,然后将其与用户提供的
链接相匹配。在处理用户输入链接值时,我遇到了这个问题。我不想改变链接的方式looks@niper在这种情况下,您只需要使用最常见的编码:utf8。您也可以按原样存储数据。您希望对数据执行的操作是否可能重复?ASCII编码不支持这些字符。这就是为什么我们有uff-8这样的编码。如果您打算在野外使用此应用程序,我强烈建议您跳过ASCII。如果您已经有unicode字符串,则不希望
将其解码()
为unicode字符串。:-)您可能希望与需要非unicode字符串的内容交互,这意味着通过
encode()
将其放入可接受的编码中。现在,这通常是UTF-8,但这实际上取决于您尝试做什么以及您正在与之交互的服务。@SiddharthShukla:我将此链接存储到我的solr数据库中,然后将其与用户提供的
链接相匹配。和你打交道的时候