Подтвердить что ты не робот

Кодировка:: UndefinedConversionError ( "\ xE2" из ASCII-8BIT в UTF-8): ошибка в приложении ROR + MongoDB

Если разработчик напишет этот метод и вызовет кодировку:: UndefinedConversionError ( "\ xE2" из ASCII-8BIT в UTF-8): ошибка.

Эта ошибка происходит только случайным образом, поэтому данные, находящиеся в исходном поле БД, являются тем, что вызывает проблему. Но поскольку у меня нет никакого контроля над этим, что я могу поместить в метод ниже, чтобы исправить это, так что плохие данные не вызывают никаких проблем?

def scrub_string(input, line_break = ' ')
  begin
     input.an_address.delete("^\u{0000}-\u{007F}").gsub("\n", line_break)
  rescue
     input || ''
  end
end

Будет ли это работать?

 input = input.encode('utf-8', :invalid => :replace, :undef => :replace, :replace => '_')
4b9b3361

Ответ 1

Да, это должно сработать, оно заменит любые странные символы, которые нельзя преобразовать в UTF-8 с подчеркиванием.

Подробнее о кодировке строк в ruby ​​здесь:

http://ruby-doc.org/core-1.9.3/String.html#method-i-encode