For all cases where you want to be forgiving in what input you accept, is the world order that you use Locale.Charset.decoder("utf8")?
Is that a design goal for the Charset module? I didn't know that, so I made it equally stringent.
With no more background to the issue than what has(n't) been presented here, I would expect that to be the standardized default practice, no flags given.
I did nothing else than made the UTF-8 encoders and decoders comply with the standard as it is beginning with Unicode 3.1 from March 2001. They didn't before.