&gt; .encode() and .decode() are so ambiguous and unintuitive<p>They are not. What is unintuitive is the default encoding in Python where an encode can trigger an implicit encode and the other way round.  The `encode()`&#x2F;`decode()` availability of strings was never a problem has you have many bytes -&gt; bytes and str -&gt; str codecs;