У меня есть приложение rails3, работающее на ruby 1.9, и я испытываю некоторые трудности с кодировкой.
Моя задача состояла в том, чтобы открыть удаленную HTML-страницу и разобрать с нее некоторую информацию.
весь мой код и база данных находятся в UTF-8, я использую код #: UTF-8, исправление mysql и т. д.
Открываемая мной страница находится в кодировке ISO-8859-1, и когда мой анализатор находит странные символы, он жалуется, что это недопустимый код UTF-8.
Я пытался использовать .force_encoding ("UTF-8") во всех проанализированных строках, но это все же.
Когда я пытаюсь конвертировать всю страницу, я получаю это:
a = open("someurl")
b = a.read.encode("UTF-8")
Encoding::UndefinedConversionError: "\xE9" from ASCII-8BIT to UTF-8
from (irb):7:in `encode'
from (irb):7
from /Users/tscolari/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/commands/console.rb:44:in `start'
from /Users/tscolari/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/commands/console.rb:8:in `start'
from /Users/tscolari/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
как я могу это исправить? кажется, что это уже пошло не так, когда он "преобразовал" страницу iso8859 в ascii.
UPDATE
Я попытался открыть URL, используя 'r: iso-8859-1: utf-8', но, очевидно, моя проблема сейчас с Hpricot, который я использую для анализа.
>a = open(b, 'r:iso-8859-1:utf-8')
>a.read.encoding
=> #<Encoding:UTF-8>
> Hpricot(a).inner_html.encoding
=> #<Encoding:ASCII-8BIT>
и снова все ошибки ... возможно, это проблема hpricot, но если кто-то знает исправление, пожалуйста.