1 # -*- coding: ISO-8859-1 -*- 2 3 import sys 4 5 # Print bytes. 6 7 s = b"???" 8 print s # ??? 9 print len(s) # 3 10 11 # Obtain text and print it. 12 13 # Explicitly from bytes. 14 15 u = unicode("???", "ISO-8859-1") 16 print u # ?????? 17 print u.__class__ # __builtins__.unicode.utf8string 18 print u.encode("ISO-8859-1") # ??? 19 print u.encoding # ISO-8859-1 20 print len(u) # 3 21 22 # Explicitly from Unicode literals. 23 24 u2 = u"???" 25 print u2 # ?????? 26 print u2.__class__ # __builtins__.unicode.utf8string 27 print u2.encode("ISO-8859-1") # ??? 28 print u2.encoding # ISO-8859-1 29 print len(u2) # 3 30 31 # Implicitly from string literals. 32 33 u3 = "???" 34 print u3 # ?????? 35 print u3.__class__ # __builtins__.unicode.utf8string 36 print u3.encode("ISO-8859-1") # ??? 37 print u3.encoding # ISO-8859-1 38 print len(u3) # 3 39 40 # Combine bytes and text. 41 # The text should be decoded. 42 43 su = s + u 44 print su # ?????? 45 print su.__class__ # __builtins__.str.string 46 print len(su) # 6 47 48 # Combine text and bytes. 49 # The text should be decoded. 50 51 us = u + s 52 print us # ?????? 53 print us.__class__ # __builtins__.str.string 54 print len(us) # 6 55 56 # Combine text and text. 57 58 uu2 = u + u2 59 print uu2 # ?????? 60 print uu2.__class__ # __builtins__.unicode.utf8string 61 print uu2.encoding # ISO-8859-1 62 print len(uu2) # 6 63 64 # Inspect and update the encoding of stdout. 65 # Note that su and us are byte strings and are not recoded. 66 67 print sys.stdout.encoding # None 68 69 sys.stdout.encoding = "ISO-8859-1" 70 print sys.stdout.encoding # ISO-8859-1 71 print u # ??? 72 print su # ?????? 73 print us # ?????? 74 75 sys.stdout.encoding = "UTF-8" 76 print sys.stdout.encoding # UTF-8 77 print u # ?????? 78 print su # ?????? 79 print us # ??????