同样是Python和编码

同样是Python和编码,python,character-encoding,Python,Character Encoding,下面是Windows上Python(2.7.8)的下一个代码片段: text1 = 'áéíóú' text2 = text1.encode("utf-8") 我还有下一个错误例外: UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128) 有什么想法吗?您忘记指定您正在处理的是unicode字符串: text1 = u'áéíóú' #prefix s

下面是Windows上Python(2.7.8)的下一个代码片段:

text1 = 'áéíóú'
text2 = text1.encode("utf-8")
我还有下一个错误例外:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)

有什么想法吗?

您忘记指定您正在处理的是unicode字符串:

text1 = u'áéíóú'  #prefix string with "u"
text2 = text1.encode("utf-8")

在python 3中,此行为已更改,并且任何字符串都是unicode,因此无需指定它。

我在Linux中使用python 2.7尝试了以下代码:

>>> text1 = 'áéíóú'
>>> text1
'\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba'
>>> type(text1)
<type 'str'>
>>> text1.decode("utf-8")
u'\xe1\xe9\xed\xf3\xfa'
>>> print '\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba'
áéíóú
>>> print u'\xe1\xe9\xed\xf3\xfa'
áéíóú
>>> u'\xe1\xe9\xed\xf3\xfa'.encode('utf-8')
'\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba'
unicode字符串可以编码为utf-8字符串:

u'\xe1\xe9\xed\xf3\xfa'.encode('utf-8')

@SuperBiasedMan-你应该试一下。@J19不客气:)我注意到你通常不接受答案。因此,如果答案解决了你的问题,通常会将其标记为已接受,这样其他人就可以快速找到解决方案。要将答案标记为已接受,请单击答案左侧的复选标记text@SuperBiasedMan没问题。我在回答中添加了一些信息这是对这个过程的一个很好的解释,但是请注意没有“unicode编码”这样的东西。Unicode只是一个数字表,而不是编码<代码>\xe1\xe9\xed\xf3\xfa实际上是
u'\xe1\xe9\xed\xf3\xfa'.encode('utf-8')