I’m writing an application that needs to transcode its input from UTF-8 to ISO-8859-1 (Latin 1).
All works fine, except I sometimes get strange encodings for some umlaut characters. For example the Latin 1 E with 2 dots (0xEB) usually comes as UTF-8 0xC3 0xAB, but sometimes also as 0xC3 0x83 0xC2 0xAB.
This happened a number of times from different sources and noting that first and last characters match what I expect, could there be an encoding rule that my library doesn’t know about ?
You have double-encoded UTF-8. Encode::Repair is one way to deal with that.