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