¿Alguna razón por la que piensas así? UTF-8 es el predeterminado.
[1] pry(main)> Nokogiri::VERSION
=> "1.18.2"
[2] pry(main)> t = '<div>Witaj w polskiej sekcji społeczności openSUSE!</div>'
=> "<div>Witaj w polskiej sekcji społeczności openSUSE!</div>"
[3] pry(main)> Nokogiri.HTML5(t).to_s
=> "<html><head></head><body><div>Witaj w polskiej sekcji społeczności openSUSE!</div></body></html>"
[4] pry(main)> Nokogiri.HTML5(t, encoding: Encoding::UTF_8).to_s
=> "<html><head></head><body><div>Witaj w polskiej sekcji społeczności openSUSE!</div></body></html>"
[5] pry(main)> Nokogiri.HTML5(t).to_s == Nokogiri.HTML5(t, encoding: Encoding::UTF_8).to_s
=> true
La función retrieve_title se utiliza para extraer títulos de URLs externas (por ejemplo, YouTube) y aunque no estoy íntimamente familiarizado con esta ruta del código, me sorprendería que fuera la fuente de tu problema.
Si estás haciendo algo más (por ejemplo, usando esta función en un plugin personalizado), el parámetro de codificación proviene del encabezado content-type del recurso obtenido:
if !encoding && content_type = _response["content-type"].strip.downcase
if content_type =~ /charset="?([a-z0-9_-]+)"?/
encoding = Regexp.last_match(1)
encoding = nil if !Encoding.list.map(&:name).map(&:downcase).include?(encoding)
end
end
max_size = max_chunk_size(uri) * 1024
title = extract_title(current, encoding)
por lo que se sospecharía que el servidor web que responde reporta un content-type incorrecto.