If I pass a library a string it receives a Unicode string, bytes already decoded using an encoding. It shouldn't be able to re-decode that in any way, whatever that is supposed to mean on a technical level.
If a library receives a byte-array representing text, that is a completely different matter and talking about encodings is fully appropriate, even required.
But this matter should predominantly exist at your application's barrier, when doing IO.
If you're regularly doing encoding and decoding anywhere else, you're doing something wrong (or your language is).