I didn't know that. That's funny. They really are doing this the hard way.
It really is the hard way. For the curious, read through the comment here describing the data layout and invariants:
https://github.com/python/cpython/blob/master/Include/unicod...
It's especially amusing because on Python 3 strings internally cache their utf-8 equivalent if it was used once.