I rather often abuse UTF8 to encode binary to pass it into a textbased API.
Today, after years (!!), was the first time I got caught by non-reversible UTF8 encodings.
byte[] original = ....;
String encoded = new String(original, "UTF-8");
byte[] decoded = encoded.getBytes("UTF-8");
Arrays.equals(original, decoded); // false!
Gotta rewrite some stuff… shame on me !