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

Как преобразовать строку в UTF8 в Ruby

Я пишу сканер, который использует Hpricot. Он загружает список строк с некоторой веб-страницы, затем я пытаюсь записать ее в файл. Что-то не так с кодировкой:

"\xC3" from ASCII-8BIT to UTF-8

У меня есть элементы, которые отображаются на веб-странице и печатаются следующим образом:

Développement

str.encoding возвращает UTF-8, поэтому force_encoding('UTF-8') не помогает. Как я могу преобразовать это в читаемый UTF-8?

4b9b3361

Ответ 1

Ваша строка, кажется, была закодирована неправильно:

"Développement".encode("iso-8859-1").force_encoding("utf-8")
#=> "Développement"

Ответ 2

Кажется, ваша строка думает, что это UTF-8, но на самом деле это нечто другое, возможно, ISO-8859-1.

Сначала определите (принудительно) правильное кодирование, а затем преобразуйте его в UTF-8.

В вашем примере:

puts "Développement".encode('iso-8859-1').encode('utf-8')

Альтернативой является

puts "\xC3".force_encoding('iso-8859-1').encode('utf-8') #-> Ã

Если Ã не имеет смысла, попробуйте еще одну кодировку.