Программе необходимо считать строку из стандартного ввода. Если в строке были русские символы и мы пытаемся удалить их backspace'ом, то внешне удаляется каждый символ (т.е. в терминале видно, что если ты 3 раза ткнул, то удалились 3 символа), но в переменной все выглядит так, будто удалились не 3 символа, а 3 байта.
input = gets.chomp
p input
Сначала вводим
человек
3 раза жмем backspace, остается
чело
жмем enter, выводится
«челов\xD0»
На С эффект точно такой же. В C использовал scanf для считывания. Оба языка я знаю плохо, но, мне кажется, раз в двух языках сработало одинаково, то проблема в системе где-то, хотя могу быть не прав.