<div dir="ltr"><div>In Python 3, decoding "€" with unicode-escape returns 'â\x82¬' which in my opinion doesn't make sense.<br></div><div><div>The € already is decoded; if it were encoded it would look like this: '\u20ac'.</div></div><div>So why is it doing this?</div><div><br></div><div>In Python 2 the behaviour is similar, but slightly different.</div><div><br></div><div><div>$ python3 -S</div><div>Python 3.3.3 (default, Nov 27 2013, 17:12:35) </div><div>[GCC 4.8.2] on linux</div><div>>>> import codecs<br></div></div><div><div>>>> codecs.decode('€', 'unicode-escape')<br></div><div>'â\x82¬'</div><div>>>> codecs.encode('€', 'unicode-escape')</div><div>b'\\u20ac'</div><div>>>></div></div><div><br></div><div><div>$ python2 -S</div><div>Python 2.7.5+ (default, Sep 17 2013, 15:31:50) </div><div>[GCC 4.8.1] on linux2</div><div>>>> import codecs<br></div><div>>>> codecs.decode('€', 'unicode-escape')</div><div>u'\xe2\x82\xac'</div></div><div><div>>>> codecs.encode('€', 'unicode-escape')</div><div>Traceback (most recent call last):</div><div>  File "<stdin>", line 1, in <module></div><div>UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)</div><div>>>></div></div><div><br></div><div><br></div></div>