как преобразовать кодировку символов с рубиновыми 1.9

я в настоящее время испытываю затруднения из-за результатов API амазонки.

сервис возвращает строку с unicode символами: Учитесь Objective\xE2\x80\x93C на Mac (Изучите Ряд),

с рубиновыми 1.9.1 строка даже не не могла обработанный:

REXML::ParseException: #<Encoding::CompatibilityError: incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)>

...

Exception parsing

Line: 1

Position: 1636

Last 80 unconsumed characters:

Learn Objective–C on the Mac (Learn Series)
10
задан Mladen Jablanović 1 July 2010 в 17:35
поделиться

1 ответ

В качестве исключения ваша строка имеет кодировку ASCII-8BIT. Вам следует изменить кодировку. Об этом есть длинный рассказ , но если вас интересует быстрое решение, просто force_encoding в строке, прежде чем выполнять какую-либо обработку:

s = "Learn Objective\xE2\x80\x93C on the Mac"
# => "Learn Objective\xE2\x80\x93C on the Mac"
s.encoding
# => #<Encoding:ASCII-8BIT>
s.force_encoding 'utf-8'
# => "Learn Objective–C on the Mac"
29
ответ дан 3 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: