URLDecoderで文字化けする時の対処法

先日javascriptで文字列をencodeURIし、それをjavaでURLパラメータとして受け取りURLDecoderでデコードする
という処理を書いていたときにいくらやってもデコードした文字列が文字化けしてちゃんと表示されませんでした
javascript側は文字列がどんな文字コードでもutf-8エンコードするらしいのでいったい何が問題なのかわかりませんでした
以下そのときのソース

URLDecoder.decode(string, "utf-8");

で、いろいろググってたらこのサイトを見つけて無事ちゃんとデコードできました!!1

結論から書くと

new String(URLDecoder.decode(string, "iso-8859-1").getBytes("iso-8859-1"),"utf-8");

でちゃんとした文字列を取得できました
なぜか一旦iso-8859-1でバイト配列にしてからStringで指定文字コードで復号させています
意味がわからないけどこれでできました

詳しい人いたら教えてください><