If the source is UTF-8, most string operations (like encoding into a specified character encoding) behaves very differently in the two cases (decoded or not decoded).
If it's indeed decoded, encode($destination_encoding, $string) will work (but you still need to know in which encoding you want to store it).
Comment on Re^3: How to encode for non-unicode output