I don't see when use bytes; would possibly be useful to solve this issue. Instead of print warning and returning the possibly useful UTF-8 encoding of the input, it simply destroys the high bits of the bad data.
$ perl -we'use bytes; $_ = chr(1000); print;' | od -t x1
$ perl -we'use bytes; $_ = chr(232); print;' | od -t x1
Whereas the original situation had a chance of providing something useful, this isn't the case with use bytes;. It possibly make things worse and hides the error.