Thanks for persistent reviews!

I destructured the return value for readability. I thought writing `index_a <=> index_b` is more understandable than `EncodingMap[a][1] <=> EncodingMap[b][1]` by naming what exactly is compared. Anyway, it's a bit verbose and I don't particular preference over the original code. I've rewrote as you suggested.

As for `upcase`, it's needed because `#name` doesn't always return the "official" name only with upper case letters as shown below:

    irb(main):006:0> Encoding::Windows_874.name
    => "Windows-874"

`EncodingMap`'s keys are normalized to upper case letters, so we need to convert when looking up.