Exercise 1 solution text = "Café" raw = text.encode("utf-8") print(raw) # b'Caf\xc3\xa9' print(raw.hex(" ")) # 43 61 66 c3 a9 print(len(text), len(raw)) # 4 5 print(raw.decode("utf-8") == text) # True (All four lines were run and printed exactly the values shown.) Explanation: the string has 4 characters but the UTF-8 bytes number 5, because the accented letter needs two bytes (c3 a9). Text is a sequence of characters; bytes are what actually gets stored. The two lengths differ whenever a character falls outside plain ASCII. Passing a separator to hex() (here a space) makes the output easier to read.