Как преобразовать Сеть:: ответ HTTP на определенное кодирование в Ruby 1.9.1?

Сделайте это примером и шагом слегка. Что-либо более сильное будет просто отчуждать Вас от остальной части команды.

Не забывают рассматривать возможность, что они на что-то, что Вы пропустили. Быть частью команды означает сменяться, учась & обучение.

ни у Какого единственного человека нет всех ответов.

9
задан Nakilon 28 May 2013 в 08:26
поделиться

1 ответ

Теперь у меня работает следующий код.

def document
  if @document.nil? && response
    @document = if document_encoding
                  Nokogiri::HTML(response.body.force_encoding(document_encoding).encode('utf-8'),nil, 'utf-8')
                else
                  Nokogiri::HTML(response.body)
                end
  end
  @document
end

def document_encoding
  return @document_encoding if @document_encoding
  response.type_params.each_pair do |k,v|
    @document_encoding = v.upcase if k =~ /charset/i
  end
  unless @document_encoding
    #document.css("meta[http-equiv=Content-Type]").each do |n|
    #  attr = n.get_attribute("content")
    #  @document_encoding = attr.slice(/charset=[a-z1-9\-_]+/i).split("=")[1].upcase if attr
    #end
    @document_encoding = response.body =~ /<meta[^>]*HTTP-EQUIV=["']Content-Type["'][^>]*content=["'](.*)["']/i && $1 =~ /charset=(.+)/i && $1.upcase
  end
  @document_encoding
end 
3
ответ дан 4 December 2019 в 08:34
поделиться
Другие вопросы по тегам:

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