Я извлекаю текст с удаленных сайтов и пытаюсь загрузить его в приложение 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
Руби говорит мне, что строка кодируется как 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
Я понимаю, что есть много других людей с подобными проблемами, но я еще не нашел решение, которое работает.