Python correctly handles printing Unicode until you try to pipe it to a file.
Compare:
$ python -c "print u'\u2018'"
‘
To:
$ python -c "print u'\u2018'" > out.txt
Traceback (most recent call last):
File "<string>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2018' in position 0: ordinal not in range(128)
Why does this happen?