In the following code, can you explain in detail why print s.encode('cp437') failed, and why it's an UnicodeDecodeError error? Can you also explain why print x.decode('cp437') failed, and why it's UnicodeEncodeError? 
# -*- coding: cp437 -*-
import sys
print sys.stdout.encoding       # cp437
print sys.stdin.encoding        # cp437
print ""
s = "Flügel"
print(s)                        # Flügel
#print s.encode('cp437')        # UnicodeDecodeError: 'ascii' codec can't decode byte 0x81
                                #   in position 2: ordinal not in range(128)
print s.decode('cp437')         # Flügel
x = u"Flügel"
print(x)                        # Flügel
#print x.decode('cp437')        # UnicodeEncodeError: 'ascii' codec can't encode character
                                #   u'\xfc' in position 2: ordinal not in range(128)
print x.encode('cp437')         # Flügel
 
    