Why don't you use `decode`? When does this raise TypeError?