Внутренняя кодировка исходной переменной - UTF-8, но это не то, что вам нужно.
Как писал tadman, вы должны сначала сказать Ruby, что фактические символы в строке находятся в кодировке IBM437.Затем вы можете преобразовать эту строку в вашу любимую кодировку, но только если такое преобразование возможно.
source.force_encoding('IBM437').encode('UTF-8')
В вашем случае вы не можете преобразовать вашу строку в ISO-8859-2, потому что не все символы IBM437 могутбыть преобразован в эту кодировку.Возможно, лучше всего придерживаться UTF-8.
В любом случае, уверены ли вы, что этот файл действительно передается в IBM437?Может быть, он хранится как таковой на сервере HTTP, но он отправляется по беспроводной сети с другой кодировкой.Или это может быть даже не совсем в IBM437, это может быть CP852, также называемый MS-DOC Latin 2 (отличается от ISO Latin 2).