What helped me was using pycharm's debugger to examine the datatypes - it shows you whether something is a bytestream or a unicode string. Stepping through some functions really clarified the matter and squashed a lot of bugs.
Oh, I knew the types all right. Could even fix errors. Didn't know what to do with them, as in what-goes-where and when and most importantly why. The unicode sandwich solved all that. ;-)