Невозможно определить из строки, в какой она кодировке. Вам всегда нужны дополнительные метаданные, которые сообщают вам, какова кодировка строки.
Если вы получаете строку из Интернета, эти метаданныев заголовках HTTP.Если заголовки HTTP неверны, вы, Ruby или кто-либо другой, абсолютно ничего не можете сделать.Вам нужно сообщить об ошибке веб-мастеру сайта, с которого вы получили строку, и подождать, пока он ее исправит.Если у вас есть Соглашение об уровне обслуживания с веб-сайтом, сообщите об ошибке, подождите неделю, а затем подайте в суд на них.