Это потому, что ваша входная строка содержит недопустимую последовательность байтов в UTF-8 , как точно говорит сообщение об ошибке.
Вы можете проверить это как
hash['name'].valid_encoding? # => false
По сути, вы должны исправить входную строку, удалив все недопустимые байтовые последовательности символов; в вашем примере это "\xE1\x83"
Если по какой-то причине вам необходимо сохранить последовательность байтов и кодировать ее в стандартный JSON, я думаю, что вы должны сначала кодировать строку, поскольку JSON не принимает двоичные данные, а только допустимые строки UTF-8. Обратите внимание, что строка с недопустимой байтовой последовательностью - это двоичные данные для JSON.
В Rails вы можете использовать кодировку Base64 следующим образом:
hash['name'] = Base64.encode64 hash['name']
hash.to_json # => a valid JSON
При декодировании необходимо указать кодировку, например,
hj = hash.to_json
Base64.decode64(JSON.parse(hj)['name']).force_encoding('UTF-8') # => Decoded string
Обратите внимание, что воспроизводимая строка НЕ в любом случае является действительным UTF-8 в вашем случае. Но это помогло бы отобразить в консоли Rails.