Я вынимаю текст с удаленных сайтов и пытаюсь загрузить его в приложение Ruby 1.9/Rails 3, которое по умолчанию использует utf-8.
Вот пример некоторого оскорбительного текста:
Cancer Res; 71(3); 1-11. ©2011 AACR.\n
Этот код защищенного кода выглядит следующим образом:
Cancer Res; 71(3); 1-11. \xC2\xA92011 AACR.\n
Ruby сообщает мне, что строка кодируется как ASCII-8BIT, и загрузка в мое приложение Rails вызывает меня:
incompatible character encodings: ASCII-8BIT and UTF-8
Я могу удалить код авторского права с помощью этого регулярного выражения
str.gsub(/[\x00-\x7F]/n,'?')
для создания этого
Cancer Res; 71(3); 1-11. ??2011 AACR.\n
Но как я могу получить символ защиты авторских прав (и различные другие символы, такие как греческие буквы) преобразованный в те же символы в UTF-8? Конечно, это возможно...
Я вижу ссылки на использование force_encoding, но это не работает:
str.force_encoding('utf-8').encode
Я понимаю, что есть много других людей с подобными проблемами, но мне еще предстоит увидеть решение, которое работает.