Tengo el siguiente código, que me da un error de secuencia de bytes no válida que apunta al método de escaneo en initialize
. ¿Alguna idea sobre cómo solucionar este problema? Por lo que vale, el error no ocurre cuando el (.*)
entre la etiqueta h1 y el cierre >
no está allí.Ruby Secuencia de bytes no válida en UTF-8
#!/usr/bin/env ruby
class NewsParser
def initialize
Dir.glob("./**/index.htm") do |file|
@file = IO.read file
parsed = @file.scan(/<h1(.*)>(.*?)<\/h1>(.*)<!-- InstanceEndEditable -->/im)
self.write(parsed)
end
end
def write output
@contents = output
open('output.txt', 'a') do |f|
f << @contents[0][0]+"\n\n"[email protected][0][1]+"\n\n\n\n"
end
end
end
p = NewsParser.new
Editar: Aquí está el mensaje de error:
news_parser.rb:10:in 'scan': invalid byte sequence in UTF-8 (ArgumentError)
resuelto: La combinación del uso: @file = IO.read(file).force_encoding("ISO-8859-1").encode("utf-8", replace: nil)
y encoding: UTF-8
resolver el problema.
Gracias!
try '@file = IO.read (archivo) .encode (" utf-8 ", reemplazar: nil)' – fl00r
No, recibo el mismo mensaje de error. – redgem
¿cuál es la codificación del archivo? – fl00r