如何将u'\ xc3 \ xa9cosyst \ xc3 \ xa8mes解码为utf-8

时间:2019-03-24 11:27:00

标签: python python-2.7 encoding escaping

通过使用BeautifulSoup进行网络抓取,我得到了一个查询字符串参数,最终将其表示为:

param_value = u'\xc3\xa9cosyst\xc3\xa8mes'

在阅读时,我猜它应该表示为écosytèmes

我尝试了几种编码/转义/解码的方法(如herehere所述)

但是我不断收到诸如以下的错误

UnicodeEncodeError('ascii', u'\xc3\xa9cosyst\xc3\xa8mes', 0, 2, 'ordinal not in range(128)')

我还尝试了重复提出的解决方案:

Python 2.7.15 (default, Jul 23 2018, 21:27:06)
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> s = u'\xc3\xa9cosyst\xc3\xa8mes'
>>> s.encode('latin-1').decode('utf-8')
u'\xe9cosyst\xe8mes'

但是它让我回到了平方1 ...

如何从u'\xc3\xa9cosyst\xc3\xa8mes'u'écosystèmes'

2 个答案:

答案 0 :(得分:0)

您已将UTF-8解码为latin-1,因此解决方案是将其编码为latin-1,然后解码为UTF-8。

>>> s = u'\xc3\xa9cosyst\xc3\xa8mes'
>>> s.encode('latin-1').decode('utf-8')
u'\xe9cosyst\xe8mes'
>>> print s.encode('latin-1').decode('utf-8')
écosystèmes

答案 1 :(得分:0)

我认为这会有所帮助:bytes(u'\xc3\xa9cosyst\xc3\xa8mes', 'latin-1').decode('utf-8')