[scala]文字コードの自動認識

"JISAutoDetect"だと、シフトJISとかEUCは自動認識してくれるのだけれど、"UTF-8"だと認識してくれません。
なので、候補となる文字セットをすべて試して、文字化けが一番少ないのを探すようにしました。
もちろん、間違える可能性もあります。

    /**
     * 文字セットを推測する。
     * @param   bytes               バイト配列
     * @param   candidates  推測する文字セットの候補。要素は1つ以上であること。
     * @return      推測した文字セット。candidatesのうちの1つを返す。
     */
    def guessCharset(bytes:Array[Byte], candidates:Seq[String]=Seq("UTF-8", "MS932", "EUC-JP")):String = {
        assert(candidates.size > 0, candidates)
        candidates.map{cs =>
            // 文字列に変換し、65533の文字数を数える。(文字セット,個数)
            (cs, new String(bytes, cs).count(_.toInt == 65533))
        }.minBy(_._2)._1
    }

一応動くけれど、65533というマジックナンバーが入っていたり、タプルの._1や._2が出ているのがいまいち。