£ is the html character character for POUND SIGN , which is the Unicode character U + 00A3. You can see this if you print it:
>>> print u'\xa3' Β£
When you use unescape() , you have converted the character of the character to its own unicode character, which means u'\xa3' - one Unicode character U + 00A3.
If you want to encode this in a different format (for example, utf-8), you will do this using the string encode method:
>>> u'\xa3'.encode('utf-8') '\xc2\xa3'
You get a double-byte string representing a single "POUND SIGN" character.
I suspect you did not understand a bit how string encodings work. You need to convert the string from bytes to unicode (see this answer for one way to do this with urllib2), then unescape html, then (possibly) convert unicode to any desired output encoding.
source share