База данных содержит некорректные строки. Поскольку вы не можете исправить ошибку в ее источнике (т.е. в базе данных), вы можете использовать gsub
для замены каждой шестнадцатеричной escape-последовательности на ее действительное значение:
str = "\\xc3\\xb6"
#=> "\\xc3\\xb6"
str.length
#=> 8
str.gsub!(/\\x(\h{2})/) { [$1].pack('H2') }
#=> "\xC3\xB6"
str.length
#=> 2
Затем вы можете указать Ruby интерпретировать байты строки как UTF-8:
str.force_encoding('UTF-8')
#=> "ö"
str.length
#=> 1