Это не декодирование, которое терпит неудачу.Это потому, что вы пытаетесь отобразить результат на консоли.Когда вы используете print, он кодирует строку, используя кодировку по умолчанию ASCII.Не используйте печать, и это должно работать.
>>> a=u'really long string containing \\u20ac and some other text'
>>> type(a)
<type 'unicode'>
>>> a.decode('unicode-escape')
u'really long string containing \u20ac and some other text'
>>> print a.decode('unicode-escape')
Traceback (most recent call last):
File "<stdin>", line 1, in
UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 30: ordinal not in range(128)
Я бы порекомендовал использовать IDLE или другой интерпретатор, который может выводить Unicode, тогда у вас не возникнет этой проблемы.
Обновление: обратите внимание, что это не то же самое, что ситуация с одной обратной косой чертой, где происходит сбой во время декодирования, но с тем же сообщением об ошибке:
>>> a=u'really long string containing \u20ac and some other text'
>>> type(a)
<type 'unicode'>
>>> a.decode('unicode-escape')
Traceback (most recent call last):
File "<stdin>", line 1, in
UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 30: ordinal not in range(128)